function submitOrder(){
	var url = getBaseURL()+'onestepcheckout/ajax/saveOrder/';
	
	jQuery.colorbox({
		html: '<div style="padding:5px;">Please wait...</div>',
		overlayClose: false,
		escKey: false,
		onLoad: function() {
		jQuery('#cboxClose').remove();
	}});

	
	new Ajax.Request(url, {
		 method: 'post',
		 parameters: $('co-billing-form').serialize()+'&'+
					 $('co-shipping-form').serialize()+'&'+
					 $('co-payment-form').serialize()+'&'+
					 $('shipping-adress-form').serialize(),
		 onSuccess: function(transport) {
			if(transport.status == 200) {
				var data = transport.responseText.evalJSON();
				//update payment methods data
				if(data){
					$('onestepcheckout-place-order').disabled = false;
					var error = data.error;
					if(error == false){
						if((data.redirect_url) && (data.redirect_url != '')){
							window.location = data.redirect_url;
						}else{
							//redirect to success page
							window.location = getBaseURL()+'checkout/onepage/success';
						}
					}else{
						jQuery.colorbox.remove();
						alert('Error\n'+data.error_messages);
					}
				}
			}
		 }
	 }); 
	
}

function loadCheckoutData(url,update_shipping_methods){
    	
     var payment_methods = $('co-payment-form');
     var order_summary = $$('div.onestepcheckout-summary')[0];
     var shipping_methods = $$('div.onestepcheckout-shipping-method-block')[0];
	 
     //show loading images
     payment_methods.update('<div class="loading-ajax">&nbsp;</div>');
     order_summary.update('<div class="loading-ajax">&nbsp;</div>');
	 
	 if(update_shipping_methods){
		shipping_methods.update('<div class="loading-ajax">&nbsp;</div>');
	 }
     
     //make ajax request to get data
     new Ajax.Request(url, {
         method: 'get',
         onComplete: function(transport) {
            if(transport.status == 200) {
                var data = transport.responseText.evalJSON();
                //update payment methods data
                payment_methods.update(data.payment_methods);
				$$('.cvv-what-is-this').invoke('observe', 'click', toggleToolTip);
                //update order details
                order_summary.update(data.order_summary);
				//update shipping methods
				if(update_shipping_methods && data.shipping_methods){
					shipping_methods.update('<form id="co-shipping-form"'+data.shipping_methods+'</form>');
					//$$('dl.shipment-methods input[name="shipping_method"]').invoke('observe', 'click', saveShippingMethod);
                    $$('input[type="radio"][name="shipping_method"]').invoke('observe', 'click', saveShippingMethod);
				}
            }
         }
     });    
         
         
}

function saveBillingAddress(){
	
	 var payment_methods = $('co-payment-form');
     var order_summary = $$('div.onestepcheckout-summary')[0];
     
    //show loading images
    payment_methods.update('<div class="loading-ajax">&nbsp;</div>');
    order_summary.update('<div class="loading-ajax">&nbsp;</div>');
	 
	var url = getBaseURL()+'onestepcheckout/ajax/saveBillingAddress/';
	var shipping_methods = $$('div.onestepcheckout-shipping-method-block')[0];
	var billingForm = new VarienForm('co-billing-form');
	
		shipping_methods.update('<div class="loading-ajax">&nbsp;</div>');
		
		new Ajax.Request(url, {
			 method: 'post',
			 parameters: $('co-billing-form').serialize(),
			 onSuccess: function(transport) {
				if(transport.status == 200) {
					var data = transport.responseText.evalJSON();
					//update payment methods data
					if(data){
						if(data.message){
							$('billing:postcode').value = '';
							alert(data.message+'\n\nPlease input billing zip code again.');
						}						
						shipping_methods.update('<form id="co-shipping-form">'+data.shipping_methods+'</form>');
						//$$('dl.shipment-methods input[name="shipping_method"]').invoke('observe', 'click', saveShippingMethod);
                        $$('input[type="radio"][name="shipping_method"]').invoke('observe', 'click', saveShippingMethod);
						payment_methods.update(data.payment_methods); 
						order_summary.update(data.order_summary);
						$$('.cvv-what-is-this').invoke('observe', 'click', toggleToolTip);
					}
				}
			 }
		 }); 
}

function saveShippingAddress(){
	
	 var payment_methods = $('co-payment-form');
     var order_summary = $$('div.onestepcheckout-summary')[0];
     
    //show loading images
    payment_methods.update('<div class="loading-ajax">&nbsp;</div>');
    order_summary.update('<div class="loading-ajax">&nbsp;</div>');
	 
	var url = getBaseURL()+'onestepcheckout/ajax/saveShippingAddress/';
	var shipping_methods = $$('div.onestepcheckout-shipping-method-block')[0];
	var shippingForm = new VarienForm('shipping-adress-form');
	
		shipping_methods.update('<div class="loading-ajax">&nbsp;</div>');
		
		new Ajax.Request(url, {
			 method: 'post',
			 parameters: $('shipping-adress-form').serialize(),
			 onSuccess: function(transport) {
				if(transport.status == 200) {
					var data = transport.responseText.evalJSON();
					//update payment methods data
					if(data){
						if(data.message){
							alert(data.message);
						}
						shipping_methods.update('<form id="co-shipping-form">'+data.shipping_methods+'</form>');
						//$$('dl.shipment-methods input[name="shipping_method"]').invoke('observe', 'click', saveShippingMethod);
                        $$('input[type="radio"][name="shipping_method"]').invoke('observe', 'click', saveShippingMethod);
						payment_methods.update(data.payment_methods); 
						order_summary.update(data.order_summary);
						$$('.cvv-what-is-this').invoke('observe', 'click', toggleToolTip);
					}
				}
			 }
		 }); 
}

function saveShippingMethod(){
	var url = getBaseURL()+'onestepcheckout/ajax/saveShippingMethod/';
	 
	var payment_methods = $('co-payment-form');
    var order_summary = $$('div.onestepcheckout-summary')[0];
    var shipping_methods = $$('div.onestepcheckout-shipping-method-block')[0];
	 
    //show loading images
    order_summary.update('<div class="loading-ajax">&nbsp;</div>');
	
	new Ajax.Request(url, {
         method: 'post',
		 parameters: $('co-shipping-form').serialize(),
         onSuccess: function(transport) {
            if(transport.status == 200) {
                var data = transport.responseText.evalJSON();
                //update payment methods data
                //payment_methods.update(data.payment_methods);
                //update order details
                order_summary.update(data.order_summary);
            }
         }
     }); 
}

function getBaseURL() {
    var url = location.href;  // entire url including querystring - also: window.location.href;
    var baseURL = url.substring(0, url.indexOf('/', 14));


    if (baseURL.indexOf('http://localhost') != -1) {
        // Base Url for localhost
        var url = location.href;  // window.location.href;
        var pathname = location.pathname;  // window.location.pathname;
        var index1 = url.indexOf(pathname);
        var index2 = url.indexOf("/", index1 + 1);
        var baseLocalUrl = url.substr(0, index2);

        return baseLocalUrl + "/";
    }
    else {
        // Root Url for domain name
        return baseURL + "/";
    }

}

/*
* Attach css validation classes
*/
function addValidationClasses(){
	//payment form
	$$('form#co-payment-form input[name="payment[method]"]').each(function(o) {
		o.addClassName('validate-one-required-by-name');
	});
	//shipping form
	$$('form#co-shipping-form input[name="shipping_method"]').each(function(o) {
		o.addClassName('validate-one-required-by-name');
	});
}

document.observe("dom:loaded", function() {

	$('onestepcheckout-login-button').observe('click', function(e){
		var url = getBaseURL()+'onestepcheckout/ajax/login/';
		var element = e.element();
		element.disabled = true;
		$('onestepcheckout-login-table').hide();
		$('onestepcheckout-login-loading').show();
		new Ajax.Request(url, {
         method: 'post',
		 parameters: $('onestepcheckout-login-form').serialize(),
         onSuccess: function(transport) {
            if(transport.status == 200) {
				element.disabled = false;
                var data = transport.responseText.evalJSON();
				if(data.error == true){
					$('onestepcheckout-login-loading').hide();
					$('login-error-message').innerHTML = data.error_msg;
					$('login-error-message').show();
					$('onestepcheckout-login-table').show();
				}else{
					//saveBillingAddress();
					window.location = getBaseURL()+'onestepcheckout/';
				}
            }
         },
		 onFailure: function(transport) {
			$('onestepcheckout-login-loading').hide();
			$('login-error-message').innerHTML = 'Login request failed.';
			$('login-error-message').show();
			$('onestepcheckout-login-table').show();
		 }
       }); 
	});
	
	$('onestepcheckout-forgot-password-link').observe('click', function(e){
		window.location = getBaseURL()+'customer/account/forgotpassword/';
	});
	
	$('billing-address-select').observe('change', function(e){
		saveBillingAddress();
	});
	
	
});
