var flashHeader,cart,slideshowData=[],useSlideShow=false,slideShow,slideShowWidth=350,slideShowHeight=350,accordion,videos=[],subTotal=0,total=0,payPalCount=1,discount=0,percentage=0,delivery=-1,promoCode='';
var homepageTRSlideshowData=[],homepageTRSlideshow=false;
window.addEvent('domready',function(){

	/*	Insert flash header */
	
	flashHeader=new Swiff('/flash/header.swf',{
	
		'width':940,
		'height':206,
		'id':'flashHeader',
		'container':'flash'
	
	});
	
	/*	Find any videos */
	
	var vidz=$('body').getElements('.video');
	vidz.each(function(value,key){
	
		var params=value.innerHTML.split(',');
		videos[videos.length]=new Swiff('/biomechanix/assets/mediaplayer/player.swf',{
	
			'width':params[1],
			'height':params[2],
			'container':value,
			'vars':{
			
				'file':params[0]
			
			}
	
		});
	
	});
	
	/*	Set left side accordion */
	
	accordion=new Accordion($('accordion'),'.handler','.element',{
		
		'opacity':false,
		'onActive':function(toggler,element){
		
			toggler.setStyles({});
			element.setStyles({});
		
		},
		'onBackground':function(toggler,element){
		
			toggler.setStyles({});
			element.setStyles({});
		
		}
		
	});
	
	/*	If this is a product listings page, enable click events for addToCart buttons */
	
	if($('productListings')){
	
		var buttons=$('productListings').getElements('.addToCartBtn');
		
		buttons.each(function(value,key){
		
			value.addEvent('click',function(){
			
				cart.addToCart(this.id,1,calculatePrice($('priceOfOne_'+this.id).value,1));
			
			});
		
		});
	
	}
	
	/*	If this is a product details page */
	
	if($('productDetails')){
	
		$('quantityChooser').addEvent('change',function(){
		
			subTotal=(this.value*$('priceOfOne').value).toString();
			subTotalArray=subTotal.split('.');
			if(!subTotalArray[1]) subTotal+='.00';
			else subTotal+=subTotalArray[1].length==1?'0':'';
			$('productDetailsSubTotal').set('text','$'+subTotal);
		
		});
		
		$('addToCartBtn').addEvent('click',function(){
		
			cart.addToCart($('productID').value,$('quantityChooser').value,calculatePrice($('priceOfOne').value,1));
		
		});
	
	}
	
	/*	Enable slideshow */
	
	if(useSlideShow) slideShow=new Slideshow('productSlideShow',slideshowData,{'width':slideShowWidth,'height':slideShowHeight,'hu':'/biomechanix/images/','delay':6000});
	if(homepageTRSlideshow) homepageTRSlideshow=new Slideshow('homepageTRSlideshow',homepageTRSlideshowData,{'width':340,'height':120,'hu':'/biomechanix/images/','delay':6000});
	
	
	/*	If this is update profile page */
	
	if($('saveProfileBtn')) $('saveProfileBtn').addEvent('click',function(){saveUserData();});
	
	/*	Grab user details if a form exists */
	
	if($('userID')) getProfileDetails();
	
	/*	Set button events */
	
	if($('checkoutBtn')) $('checkoutBtn').addEvent('click',function(){location.href='/en/account/delivery/';});
	if($('payBtn')) $('payBtn').addEvent('click',function(){saveUserData();});
	if($('registerBtn')) $('registerBtn').addEvent('click',function(){saveUserData();});
	if($('loginBtn')) $('loginBtn').addEvent('click',function(){login();});
	if($('retrieveBtn')) $('retrieveBtn').addEvent('click',function(){retrievePassword();});
	if($('checkPromoCodeBtn')) $('checkPromoCodeBtn').addEvent('click',function(){checkPromoCode();});
	
	
	/*	Create cart */
	
	cart=new Cart();
	
	/*	If allow delivery today */
	
	if($('deliverTodayBtn')){
	
		$('deliverTodayBtn').addEvent('click',function(){
		
			calculateTotalPrice();
		
		});
	
	}

});

/*	Cart functions */

function buildSideCart(data){

	/*	Housekeeping */

	$('sideCart').empty();
	new Element('img',{'src':'/images/interface/preloader.gif'}).injectInside($('sideCart'));
	disableButtons(true);

	var request=new Request({
	
		'url':'/assets/cart-generator.php',
		'data':{'cartItems':JSON.encode(data)},
		'method':'post',
		'onSuccess':function(response){
		
			if(response!='') $('sideCart').set('html',response);
			else $('sideCart').set('html','<div class="comments">Your cart is empty</div>');
			
			/*	Enable change event for select boxes */
			
			var selectBoxes=$('sideCart').getElements('select');
			selectBoxes.each(function(value,key){
			
				if(value.id.substr(0,7)=='select_'){
				
					value.addEvent('change',function(e){
					
						var id=this.id.substr(7);
						
						$('unittotal_'+id).set('text','$'+calculatePrice(this.value,$('unitprice_'+id).value));
						
						cart.updateItemQuantity(id,this.value,$('unitprice_'+id).value);
						cart.updateCart();
					
					});
					
					$('unittotal_'+value.id.substr(7)).set('text','$'+calculatePrice(value.value,$('unitprice_'+value.id.substr(7)).value));
				
				}
			
			});
			
			var deleteBtns=$('sideCart').getElements('h2');
			deleteBtns.each(function(value,key){
			
				if(value.id.substr(0,7)=='delete_'){
				
					value.addEvent('click',function(){
					
						cart.deleteItem(this.id.substr(7));
					
					});

				}
				
			});
									
			calculateTotalPrice();
		
		}
	
	}).send();

}

function calculatePrice(price,quantity){

	return (price*quantity).toFixed(2);

}

function calculateTotalPrice(){

	/*	Housekeeping */
	
	disableButtons(true);
	subTotal=0;
	total=0;
	var deliveryCharges=0;
	payPalCount=1;
	
	/*	Loop through selection boxes */

	var selectBoxes=$('sideCart').getElements('select');
	selectBoxes.each(function(value,key){
	
		if(value.id.substr(0,7)=='select_') subTotal+=value.value*$('unitprice_'+value.id.substr(7)).value;
	
	});
	
	/*	If additional discount is given, modify sub total */
	
	$('sideCartDiscount').set('text','');
	
	if(discount>0){	//	Priority goes to fixed discount amount
	
		subTotal=subTotal-discount;
		subTotal=subTotal<0?0:subTotal;
		$('sideCartDiscount').set('html','Sub-total Discount : $'+calculatePrice(discount,1)+' off<br>');
	
	}
	else{
	
		if(percentage>0){	// second priority goes to percentage discount
	
			subTotal=(100-percentage)/100*subTotal;
			$('sideCartDiscount').set('html','Sub-total Discount : '+calculatePrice(percentage,1)+'%<br>');
		
		}
	
	}
	
	if(delivery>-1) deliveryMinimum=delivery;
	
	/*	Update side cart sub total */
	
	$('sideCartSubTotal').set('text','$'+calculatePrice(subTotal,1));
	
	/*	Calculate delivery */
	
	if(subTotal>=deliveryMinimum||subTotal==0){
	
		$('sideCartDelivery').set('text','$0.00');
		deliveryCharges=0;
		
	}
	else{
	
		deliveryCharges=deliveryRegular;
		if($('deliverTodayBtn')){
		
			if($('deliverTodayBtn').checked) deliveryCharges=deliverySameDay;
		
		}
		
		$('sideCartDelivery').set('text','$'+calculatePrice(deliveryCharges,1));
		
	}
	
	/*	Calculate total */
	
	total=subTotal+deliveryCharges;
	$('sideCartTotal').set('text','$'+calculatePrice(total,1));
	if($('finalAmount')) $('finalAmount').set('text',calculatePrice(total,1));
			
	/*	Create PayPal Variables */
	
	if($('payPalForm')){
	
		$('handling_cart').value=calculatePrice(deliveryCharges,1);
		$('amount_1').value=calculatePrice(subTotal,1);
	
	}
	
	/*	Housekeeping */
	
	disableButtons(false);
	
	if(total<=0){
	
		if($('payBtn')) $('payBtn').disabled=true;
		
	}

}

function disableButtons(toggle){
	
	if($('saveProfileBtn')) $('saveProfileBtn').disabled=toggle;
	if($('payBtn')) $('payBtn').disabled=toggle;
	if($('checkoutBtn')) $('checkoutBtn').disabled=toggle;
	if($('registerBtn')) $('registerBtn').disabled=toggle;
	if($('checkPromoCodeBtn')) $('checkPromoCodeBtn').disabled=toggle;

}

function getProfileDetails(){

	/*	Housekeeping */
	
	disableButtons(true);
	
	/*	Request */
	
	var request=new Request({
	
		'method':'get',
		'url':'/assets/get-profile.php',
		'onSuccess':function(response){
		
			/*	Populate form fields */
			
			var userData=JSON.decode(response);
			for(var i in userData.data){
			
				if($(i)) $(i).value=userData.data[i];
			
			}
		
			/*	Housekeeping */
		
			disableButtons(false);
					
		}
	
	}).send();

}

function retrievePassword(){

	/*	Housekeeping */
	
	disableButtons(true);
	$('retrieveError').empty();
	
	/*	Setup Query */
	
	var query={
	
		'retrieveEmail':$('retrieveEmail').value
	
	};
	
	/*	Validate */
	
	if(query.username==''){
	
		$('retrieveError').set('text','Please provide your email address.');
		disableButtons(false);
		return;
	
	}
	
	/*	Request */
	
	var request=new Request({
	
		'method':'post',
		'data':query,
		'url':'/assets/retrieve.php',
		'onSuccess':function(response){
		
			/*	Redirect Home if success */
		
			var data=JSON.decode(response);
			if(!data.error) location.href='/';
			else $('retrieveError').set('text',data.errorMsg);
			
			/*	Housekeeping */
			
			disableButtons(false);
		
		}
	
	}).send();

}

function login(){

	/*	Housekeeping */
	
	disableButtons(true);
	$('loginError').empty();
	
	/*	Setup Query */
	
	var query={
	
		'username':$('username').value,
		'pwd':$('pwd').value
	
	};
	
	/*	Validate */
	
	if(query.username==''||query.pwd==''){
	
		$('loginError').set('text','Please provide both a username & password');
		disableButtons(false);
		return;
	
	}
	
	/*	Request */
	
	var request=new Request({
	
		'method':'post',
		'data':query,
		'url':'/assets/login.php',
		'onSuccess':function(response){
		
			/*	Redirect Home if success */
		
			var data=JSON.decode(response);
			if(!data.error){
			
				if($('payBtn')) location.href='';
				else location.href='/';	
				
			}
			else $('loginError').set('text','Invalid Login');
			
			/*	Housekeeping */
			
			disableButtons(false);
		
		}
	
	}).send();

}

function saveUserData(){

	/*	Housekeeping */
	
	disableButtons(true);

	/*	Validate */
	
	var validated=true;
	if($('email').value==''){$('profileUpdateError').set('text','Please provide your email address');validated=false;}
	if($('first_name').value==''){$('profileUpdateError').set('text','Please provide your first name');validated=false;}
	if($('contact_no').value==''){$('profileUpdateError').set('text','Please provide your contact number');validated=false;}
	
	if($('password')&&$('password1')){
		if($('password').value!=$('password1').value){$('profileUpdateError').set('text','Your passwords do not match');validated=false;}
		if($('password1').value==''&&$('password').value!=''){$('profileUpdateError').set('text','Please retype your password');validated=false;}
	}
	if(!validated){
	
		disableButtons(false);
		return;
	
	}

	/*	Setup Query */
	
	var data={
	
		'moduleName':'addressbook',
		'addressbook_status':1,
		'addressbook_delcountry':156,
		'addressbook_title':$('first_name').value,
		'addressbook_lastname':$('last_name').value,
		'addressbook_no':$('contact_no').value,
		'addressbook_email':$('email').value,
		'addressbook_gender':$('gender').value,
		'addressbook_del1':$('address1').value,
		'addressbook_del2':$('address2').value,
		'addressbook_delpostal':$('zip').value,
		'addressbook_birthday':$('birthday').value,
		'addressbook_birthmonth':$('birthmonth').value,
		'addressbook_birthyear':$('birthyear').value
	
	};
	
	if($('password')&&$('password1')) data.addressbook_password=$('password').value;
	if($('userID')) data.addressbook_id=$('userID').value;
	
	/*	Request */
	
	var request=new Request({
	
		'data':data,
		'url':'/biomechanix/assets/scripts/modules/save.php',
		'method':'post',
		'onSuccess':function(response){
		
			var response=JSON.decode(response);
			if(response.error=='false'||response.error==false){
				if($('payBtn')) gotoPayment(response.id);
				else if($('registerBtn')) location.href='/en/welcome-to-prestat/';
				else{
				
					if($('profileUpdateError')) $('profileUpdateError').set('text','Your profile has been updated');
					disableButtons(false);
					
				}
				
			}
		
		}
	
	}).send();

}

function checkPromoCode(addressbookID){

	/*	Housekeeping */
	
	disableButtons(true);
	$('profileUpdateError').empty();

	/*	Check Promo Code */
	
	if($('promoCode').value.trim()!=''){
	
		var request=new Request({
		
			'method':'post',
			'data':{'promoCode':$('promoCode').value.trim(),'addressbookID':addressbookID},
			'url':'/assets/check-promo-code.php',
			'onSuccess':function(response){
			
				var response=JSON.decode(response);
				
				if(!response.error){
				
					discount=response.discount;
					percentage=response.percentage;
					delivery=response.delivery;
					promoCode=response.promoCode;
					calculateTotalPrice();
				
				}
				else $('profileUpdateError').set('text','Invalid promo code');
				
				disableButtons(false);
			
			}.bind({'addressBookID':addressbookID})
		
		}).send();
	
	}
	else{
	
		$('profileUpdateError').set('text','Please enter a promo code');
		disableButtons(false);
		
	}

}

function gotoPayment(addressbookID){

	/*	Housekeeping */
	
	disableButtons(true);

	/*	Get cart items */
	
	var today=new Date();
	var data={
	
		'moduleName':'orders',
		'orders_addressbook_id':addressbookID,
		'orders_title':today.toString(),
		'orders_configuration':JSON.encode(cart.getCartData()),
		'orders_recipient':$('recipientName').value,
		'orders_special_requests':$('specialRequests').value=='E.g. Please deliver my chocolates on DD/MM/YY in the afternoon...'?'':$('specialRequests').value,
		'orders_personal_message':$('recipientMessage').value,
		'orders_address1':$('address1').value,
		'orders_address2':$('address2').value,
		'orders_postal':$('zip').value,
		'orders_promo_code':promoCode,
		'orders_discount':-1,
		'orders_total':total
		
	};
	
	if(discount>0) data.orders_discount='$'+discount;
	else{
		
		if(percentage>0) data.orders_discount=percentage+'%';
		
	}
	data.orders_discount+=' (Delivery Minimum of $'+delivery+')';
	
	/*	Save Order */
	
	var request=new Request({
	
		'method':'post',
		'url':'/biomechanix/assets/scripts/modules/save.php',
		'data':data,
		'onSuccess':function(response){
		
			var response=JSON.decode(response);
			
			/*	Update PayPal Order No. */
			
			$('item_name_1').value=$('item_name_1').value+response.id;
	
			/*	Submit to PayPal */

			cart.submit('payPalForm');
		
		}
	
	}).send();

}






