// Runs the Storybook Book Order Form

// globals
var dh;
var googleXML;
var shipSelectEl;
var showShippingEl = 0;
var shipChoice = 0;

// Initialize the page
initOrderPage = function() {
	dh           = YAHOO.ext.DomHelper;
	shipSelectEl = document.getElementById('shipping_select');
	// hideShipping(0);
	YAHOO.util.Event.addListener('orderform','submit',processOrder);
}

YAHOO.util.Dom.getElementsByAttribute = function(atr, val, tag, root) {
	var method = function(el) { 
		var re = new RegExp('(?:^|\\s+)' + val + '(?:\\s+|$)');
		if ( el.getAttribute(atr) && re.test(el.getAttribute(atr)) ) {
			return true;
		}
		return false;
	};
	return this.getElementsBy(method, tag, root);
};

getValue = function(inputVarName) {
	var inputVar = YAHOO.util.Dom.getElementsByAttribute('name', inputVarName, 'input');
	return inputVar[0].value;
}

getRadioValue = function(radioSetName) {
	var rInps = YAHOO.util.Dom.getElementsByAttribute('name', radioSetName, 'input');
	for (var i=0; i<rInps.length; ++i) {
		var inp = rInps[i];
		if (inp.getAttribute('type') == 'radio' && inp.checked) {
			return inp.value;
		}
	}
	return false;
}

// Replace the shipping select with a button
hideShipping = function(e) {
	YAHOO.util.Dom.setStyle(shipSelectEl,'display','none');
	if ( !showShippingEl ) {
		showShippingEl = dh.insertBefore('submitbutton', {
			tag: 'div', id: 'showshipping', children: [
				{tag: 'a', href: '/order', html: 'Click here if <span>Shipping Outside the US.</span>'}
			]
		});
		YAHOO.util.Event.addListener(showShippingEl,'click',showShipping);
	}
	else {
		YAHOO.util.Dom.setStyle(showShippingEl,'display','block');
	}
}

showShipping = function(e) {
	YAHOO.util.Dom.setStyle(shipSelectEl,'display','block');
	YAHOO.util.Dom.setStyle(showShippingEl,'display','none');
	YAHOO.util.Event.stopEvent(e);
}

processOrder = function(e) {
	// get elements
	var bookChoice = getRadioValue('bookchoice');
	var phoneNum   = getValue('phone');
	shipChoice = getRadioValue('shipchoice');
	
	// check that data is valid
	if ( !bookChoice || (phoneNum == '') ) {
		alert ('Please enter all required information before ordering.');
		YAHOO.util.Event.stopEvent(e);
		return;
	}
	
	var shipTxt;
	var shipCost;
	switch (shipChoice) {
		case 'can':
			shipTxt  = 'Delivery to Canada';
			shipCost =  15.0;
			break;
		case 'int':
			shipTxt  = 'International delivery';
			shipCost = 25.0;
			break;
		default:
			shipTxt  = 'U.S. delivery';
			shipCost = 7.5;
			break;
	}
	
	var titleTxt = '';
	var innerTxt = '';
	var itemDesc = '';
	var itemCost = 0;
  switch (bookChoice) {
    case 'charming':
			titleTxt = 'Home Plan Book:  The Truly Charming Collection';
			itemDesc = 'A collection of storybook home plans and elevations.';
      itemCost = 28.0;
      innerTxt = 'You are purchasing <span class="btitle blue">The Truly Charming Collection</span> with '+shipTxt;
      break;
    case 'tiny':
			titleTxt = 'Home Plan Book:  The Truly Tiny Collection';
			itemDesc = 'A collection of storybook home plans and elevations.';
      itemCost = 24.0;
      innerTxt = 'You are purchasing <span class="btitle blue">The Truly Tiny Collection</span> with '+shipTxt;
      break;
    case 'both':
			titleTxt = 'Both Home Plan Books: The Truly Charming Collection and The Truly Tiny Collection';
			itemDesc = 'Both of our collections of quaint storybook home plans and elevations.';
      itemCost = 52.0;
			innerTxt = 'You are purchasing both <span class="btitle blue">The Truly Charming Collection</span><br />and <span class="btitle blue">The Truly Tiny Collection</span> with '+shipTxt;
      break;
  }
	
	YAHOO.util.Dom.setStyle('orderform','display','none');
	
	// Generate PayPal Form
	var tpl = dh.createTemplate({tag:'input', type:'hidden',name:'{0}',value:'{1}'});
	tpl.compile();
	
	dh.append('pagemain', { tag:'div',cls:'orderform',id:'orderWrapper' });

	var itemTotal100 = (100*(itemCost+shipCost)) + '';
	dh.append('orderWrapper', { tag:'p', html:innerTxt+' for <span class="red">$'+(itemTotal100.substring(0,itemTotal100.length-2)+'.'+itemTotal100.substring(itemTotal100.length-2,itemTotal100.length))+'</span>.' });
	dh.append('orderWrapper', { tag:'p', class:'italic', html:'Please select one of the following payment options to complete your order.' });

	dh.append('orderWrapper', {
		tag:'form', 
		id:'orderformPP',
		action:'https://www.paypal.com/cgi-bin/webscr',
		method:'post' });
	tpl.append('orderformPP',['cmd', '_xclick']);
	tpl.append('orderformPP',['business', 'storybookhomes@comcast.net']);
	tpl.append('orderformPP',['undefined_quantity', '1']);
	tpl.append('orderformPP',['item_name', (titleTxt+' with '+shipTxt)]);
	tpl.append('orderformPP',['amount', (itemCost)+'.00']);
	tpl.append('orderformPP',['page_style', 'PayPal']);
	tpl.append('orderformPP',['no_shipping', '2']);
	tpl.append('orderformPP',['return', 'http://www.storybookhomes.biz']);
	tpl.append('orderformPP',['cancel_return', 'http://www.storybookhomes.biz']);
	tpl.append('orderformPP',['no_note', '1']);
	tpl.append('orderformPP',['currency_code', 'USD']);
	tpl.append('orderformPP',['lc', 'US']);
	tpl.append('orderformPP',['bn', 'PP-BuyNowBF']);
	tpl.append('orderformPP',['on0', 'Phone Number']);
	tpl.append('orderformPP',['os0', phoneNum]);
	tpl.append('orderformPP',['shipping', shipCost]);
	dh.append('orderformPP', { tag:'input',
														type:'image',
														name:'submit',
														value:'PP-BuyNowBF',
														src:'https://www.paypal.com/en_US/i/btn/x-click-but03.gif',
														alt:'Make payments with PayPal - it\'s fast, free and secure!' });

	dh.append('orderWrapper',{ tag:'br' });
	dh.append('orderWrapper',{ tag:'a', href:'/order', id:'retryorder', html:'Revise Order' });

	googleXML  = '<?xml version="1.0" encoding="UTF-8"?>';
	googleXML += '<checkout-shopping-cart xmlns="http://checkout.google.com/schema/2">';
	googleXML += '<shopping-cart>';
	googleXML += '<items>';
	googleXML += '<item>';
	googleXML += '<item-name>'+(titleTxt)+'</item-name>';
	googleXML += '<item-description>'+itemDesc+'</item-description>';
	googleXML += '<unit-price currency="USD">'+itemCost+'.00</unit-price>';
	googleXML += '<quantity>1</quantity>';
	googleXML += '</item>';
	googleXML += '</items>';
	googleXML += '</shopping-cart>';
	
	googleXML += '<checkout-flow-support>';
	googleXML += '<merchant-checkout-flow-support>';
	googleXML += '<shipping-methods>';
	googleXML += '<flat-rate-shipping name="'+shipTxt+'">';
	googleXML += '<price currency="USD">'+shipCost+'</price>';
	googleXML += '</flat-rate-shipping>';
	googleXML += '</shipping-methods>';
	googleXML += '</merchant-checkout-flow-support>';
	googleXML += '</checkout-flow-support>';
	googleXML += '</checkout-shopping-cart>';
	
	//document.write(googleXML);
	
	// process the google XML here
	var trans = YAHOO.util.Connect.asyncRequest('POST','/wp-content/extras/googlecheckout/checkoutProcessing.php',
																							googleCallback, 'googledata='+googleXML);

	YAHOO.util.Event.addListener('retryorder','click',retryOrder);
	YAHOO.util.Event.stopEvent(e);
}

var googleCallback = {
	success:gcSuccess,
	failure:gcFailure,
	timeout:5000
}

function gcSuccess (o) {
	googleForm  = o.responseText;
	dh.insertBefore('orderformPP', { tag:'div', html:googleForm });
}

function gcFailure (o) {
	// need to add a failure handler
}

var retryOrder = function(e) {
	YAHOO.util.Dom.setStyle('orderform','display','block');
	var pageMain     = document.getElementById('pageMain');
	var ow = getEl('orderWrapper');
	ow.setStyle('display','none');
	// if (0 == shipChoice || 'std' == shipChoice) hideShipping();
	YAHOO.util.Event.stopEvent(e);
}

YAHOO.util.Event.addListener(window,'load',initOrderPage);
