/*-----------------------------------
	BSN Javascript Library by 
	Kim Ronemus Design
-----------------------------------*/

/*
	Set all link events
*/
function loadLinks(array, classname) {
	var links = new Array();
	for(key in array) {
		if(hasClassName(array[key], classname)) {
			links[key] = array[key];
		}
	}
	return links;
}

function loadCard(e) {
	var element = e.target;
	
	//fargon IE
	if(typeof e.target === 'undefined') {
		element = e.srcElement;
	}
	
	if($('overlay')) {
		return false; //something is already over the layout
	}
	
	var card	=	'/card/'+element.id;
	var option 	= {method:'post', parameters:'test', async:true, onSuccess:insertCard}
	
	loadOverlay();
	Ajax_Request.init(card, option);
	Ajax_Request.makeRequest();
}

function insertCard(r) {
	$('overlay').innerHTML = r;
	overlay = $('overlay');
}


function loadShop(e) {
	loadOverlay();
	var cart = $('cart');
	cart.style.display = 'block'
	
}

function loadCartTriggers() {
	
	if($('cart')) {
		$('zip').value = ''
		var size_menus = document.getElementsByTagName('select');
		giftOption();
		for(i=0; i<size_menus.length; i++) {
			addEvent('change', updateProdData, size_menus[i].id);
		}
		
		if(simpleCart.quantity > 1) {
			$('zip').disabled = false;
		}
		
		addEvent('click', giftOption, 'gift');
		addEvent('keyup', getShipRate, 'zip');
		addEvent('keyup', checkZip, 'zip');
		addEvent('click', checkZip, 'checkout_faux');
		addEvent('click', giftCharge, 'gift');
		addEvent('click', update_discount, 'add_item_1');
		addEvent('click', update_discount, 'add_item_2');
		addEvent('click', update_discount, 'add_item_3');
		
		
	}
	
}

function update_discount(e) {
	
	var link = e.target;
	var linkid	= $(link.parentNode.id);
	var parent = linkid.parentNode;
	var next = parent.nextSibling;
	var select = $(next.id);
	var values = select.value;
	var prod = values.split('|');
	
	var original = parseFloat(prod[0]);
	var discounted = parseFloat(prod[5]);
	var discount = parseFloat(original - discounted);
	var diff = Math.round(discount * 100) /100;
	
	if(discounted == 0) {
		simpleCart.discount = 0;
	}
	
	simpleCart.add_item_price = original;
	
}


function changeTitle(e) {
	var ele = e.target;
	var list = ele.id.split('_')[1];
	var prodid = 'prod_'+list;
	var prod = $(prodid);
	var prodNodes = prod.childNodes;
	
	for(i=0; i<prodNodes.length; i++) {
		if(hasClassName(prodNodes[i], 'item_name')) {
			//var name = prodNodes[i].innerHTML;
			//prodNodes[i].innerHTML = ele.value;
		}
		
	}
}

function removeDefault(e) {
	
	if((defaultText == $('email-list').value)) {
		$('email-list').value = '';
		return false;
	}
	
	
}

function resetDefault(e) {

	if($('email-list').value == '') {
		$('email-list').value = defaultText;
	}
	
	return false;
}

function checkEmail() {
	
	if(!validateEmail($('email-list').value)) {
		$('erroroutput').innerHTML = 'Your email is invalid';
	} else {
		$('erroroutput').innerHTML = '';
	}
	
}

function addemaillist(e) {
	var valid = false;
	if(!validateEmail($('email-list').value)) {
		$('erroroutput').innerHTML = 'Your email is invalid';
		return false;
	}
	var email = $('email-list').value;
	var list = 'maillist';
	params = 'email='+email+'&list='+list;
	var options 	= {method:'post', parameters: params, async:true, onSuccess:addToList}
	var url = '/ajax/subscribe';
	
	Ajax_Request.init(url, options);
	Ajax_Request.makeRequest();
	
	$('email-list').value = 'thank you';
}

function addToList(e) {
	//alert('sent to email list')
}


function validateEmail(text) {
	var pattern = /^[^@]+@[^@]+.[a-z]{2,}$/i;
	var test 	= text.search(pattern);
	if(test == -1) {
		return false;
	} else {
		return true;
	}
}

function giftOption() {

	var inputs = document.getElementsByTagName('input');
	var ta = document.getElementsByTagName('textarea')[0];
	var num_inputs = inputs.length;
	for(i=0; i < num_inputs; i++) {
		if(hasClassNames(inputs[i], 'disabled')) {
			if($('gift').checked == true) {
				addClassName('to', 'enabled');
				addClassName('from', 'enabled');
				addClassName('message', 'enabled');
				inputs[i].disabled = false;
				ta.disabled = false;
			} else {
				$('to').value = '';
				$('from').value = '';
				$('message').value = '';
			}
		}
	}
}

function updateProdData(e) {
	
	var ele = e.target;
	//fargon IE
	if(typeof e.target === 'undefined') {
		ele = e.srcElement;
	}
	

	
	if(ele.value === '0' || ele.value === 'undefined') {
		var null_item = true;
	}
	
	var list = ele.id.split('_')[1];
	var prodid = 'prod_'+list;
	
	//set product div into variable
	var prod = $(prodid);
	var prodNodes = prod.childNodes;
	
	var prodData = ele.value.split('|');
	if(null_item) {
		var prodPrice = 0;
		var prodName = 0;
		var prodThumb = 0;
		var prodWeight = 0;
		var prodQty = 0;
		var prodDisc = 0;
		simpleCart.discount = prodDisc;
	} else {
		var prodPrice = prodData[0];
		var prodName = prodData[2]+' : '+prodData[1];
		var prodThumb = '/assets/images/shop/'+prodData[3];
		var prodWeight = prodData[4];
		var prodQty = 1
		var prodDisc = 0;
		simpleCart.discount = prodDisc;
		

		if(prodData[5] > 0) {
			var prodDisc = parseFloat(prodData[5]);
			discount = prodPrice - prodDisc;
			simpleCart.discount = Math.round(discount*100)/100 + parseFloat(simpleCart.discount);
			prodPrice = prodData[5];
			prodDisc = prodData[5];
			
			
		}
		
	}
	
	
	for(i=0; i<prodNodes.length; i++) {

		if(hasClassName(prodNodes[i], 'item_name')) {
			prodNodes[i].innerHTML = prodName;
		}
		
		if(hasClassName(prodNodes[i], 'item_price')) {
			prodNodes[i].innerHTML = prodPrice;
		}
		
		if(hasClassName(prodNodes[i], 'item_weight')) {
			prodNodes[i].innerHTML = prodWeight;
		}
		
		if(hasClassName(prodNodes[i], 'item_quantity')) {
			prodNodes[i].innerHTML = prodQty;
		}
		
		if(hasClassName(prodNodes[i], 'item_thumb')) {
			prodNodes[i].innerHTML = prodThumb;
		}
		
		

	}
	
	

	
}


function checkZip() {
	//console.log('checking zip')
	//get value of zip code form
	var zipcode = $('zip').value;
	//console.log('zip code: '+zipcode);

	//fake button element
	var faux = $('checkout_faux');
	
	var checkout = $('checkout');
	var re = /^\d{5}([\-]\d{4})?$/;
	var result = re.test(zipcode);
	
	var isIE = (navigator.appName=="Microsoft Internet Explorer");
	var IEversion = navigator.appVersion;
	if(isIE) {
	IEversion = parseInt(IEversion.substr(IEversion.indexOf("MSIE")+4));
	} else {
	IEversion = 0;
	}
	//alert("isIE=" + isIE + ", version=" + IEversion)

	if(result) {
		//console.log('faux button')
		$('zip-message').innerHTML = '';
		if(isIE) {
			IEgetShipRate();
		}
		return true;
	} else {
		//console.log('faux button enabled')

		faux.className = 'faux-no';
		$('zip-message').innerHTML = 'You must enter a valid zip code';
		return false;
	}
}


function getShipRate() {
	zipcode = $('zip').value;
	//console.log('simpleCart weight: '+simpleCart.totalWeight)
	
	if(zipcode.length >= 5) {
		weight = Math.round(simpleCart.totalWeight, 2);
		if(weight == 0 && simpleCart.quantity >=1) {

			weight = 1;
		}
		url = '/ajax/getShipRate/'+weight+'/'+zipcode;
		options = {method:'post', async: true, onSuccess:updateShipRate, onLoading: checkoutLoader}
		Ajax_Request.init(url, options);
		Ajax_Request.makeRequest();
	} else {
		//console.log('less than 5 digits');
		removeClassName('checkout_button', 'enabled');
		addClassName('checkout_button', 'disabled');
	}
}

function IEgetShipRate() {
	
	zipcode = $('zip').value;
	//console.log('simpleCart weight: '+simpleCart.totalWeight)

	if(zipcode.length >= 5 && simpleCart.quanity > 0) {
		weight = simpleCart.totalWeight;

		url = '/ajax/getShipRate/'+weight+'/'+zipcode;
		options = {method:'post', async: true, onSuccess:updateShipRate, onLoading: checkoutLoader}
		Ajax_Request.init(url, options);
		Ajax_Request.makeRequest();
	} 
}

function updateShipRate(r) {
	
	var shipCost = r.split(', ');
	var num_items = simpleCart.quantity;
	var faux = $('checkout_faux');

	base = shipCost[0];
	handling = shipCost[1];
	if(shipCost == '-1') {
		shipCost = false
	} else {
		if(num_items > 1) {
			shipCost = parseFloat(base) + parseFloat(handling);
		} else {
			shipCost[0] = parseFloat(base) + parseFloat(0.00);
		}
		
		simpleCart.shippingFlatRate = shipCost;
	}
	if(checkZip()) {
		//console.log('zip is ok');
		removeClassName('checkout_button', 'disabled');
		addClassName('checkout_button', 'enabled');
		faux.className = 'faux-k';
		$('checkout_button').innerHTML = '';
	} else {
		//console.log('zip is no good')
		$('checkout_button').innerHTML = '';
	}
	

	if(shipCost) {
		simpleCart.updateTotals();
	} else {
		if(simpleCart.quantity > 0) {
			$('zip-message').innerHTML = 'An error occured: Likely a bad zip code.';
		} else {
			$('zip-message').innerHTML = 'Cart is empty';
		}
		
	}
	
}

function giftCharge() {
	var gift = $('gift');
	if(gift.checked) {
		var qty = simpleCart.quantity;
		var gift_charge = parseInt(qty) * 1;
	}
}

function checkoutLoader() {
	$('checkout_button').innerHTML = '<img src="/assets/images/ajax-loader.gif" class="loader" />';
}

function intro() {
	
	var isIE = (navigator.appName=="Microsoft Internet Explorer");
	var IEversion = navigator.appVersion;
	if(isIE) {
	IEversion = parseInt(IEversion.substr(IEversion.indexOf("MSIE")+4));
	} else {
	IEversion = 0;
	}
	//alert("isIE=" + isIE + ", version=" + IEversion)
	
	var intro	=	'<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="978" height="500" id="bobby-sue-jump" align="middle">';
		intro		+=	'<param name="allowScriptAccess" value="sameDomain" />';
		intro		+=	'<param name="allowFullScreen" value="false" />';
		intro		+=	'<param name="movie" value="/assets/flash/bobby-sue-jump.swf" /><param name="loop" value="false" /><param name="menu" value="false" />';
		intro		+=	'<param name="quality" value="high" />';
		intro		+=	'<param name="wmode" value="transparent" /><param name="bgcolor" value="#ffffff" />';
		intro		+=	'<embed src="/assets/flash/bobby-sue-jump.swf" loop="false" menu="false" quality="high" wmode="transparent" bgcolor="#ffffff" width="978" height="500" name="bobby-sue-jump" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';
		intro		+=	'</object>';
		
		if(!isIE) {
			
			//after 8 seconds setup the png version of the logo
			//then remove the flash file from the document
			
			
			$('bsnintro').innerHTML = intro;
			setTimeout(function() {
				$('sitename').style.visibility = 'visible';
				$('bsnintro').innerHTML = '';
			}, '8000');
		} else {
			
			$('sitename').style.visibility = 'visible';
			
		}
		
		

			
			
	
}


/*-----------------------------------
	Site variables
------------------------------------*/


loadCartTriggers();

if($('home')) {
	var links = document.getElementsByTagName('a');
	links = loadLinks(links, 'overlink');
	addEvent('click', loadCard, links);
	addEvent('click', loadShop, 'getnuts');
	intro();
	
}

if($('email-list')) {
	
	var defaultText = $('email-list').value;
	
	addEvent('focus', removeDefault, 'email-list');
	addEvent('blur', resetDefault, 'email-list');
	addEvent('change', checkEmail, 'email-list');
	addEvent('submit', addemaillist, 'emaillist');
	
}

var sizes = {"names" : [
		{'name' : 'mini jar', 'size' : '2 oz'},
		{'name' : 'classic jar', 'size' : '8 oz'},
		{'name' : 'pantry jar', 'size' : '16 oz'},
		{'name' : 'party jar', 'size' : '36 oz'}
	]}
