/* AJAX UTILITY FUNCTIONS
   ================================================================
 
   - CATALOGUE MODE SWITCHER
   - BASKET / SEARCH SLIDERS
   - LITBOX Image

   ================================================================ */

// CATALOGUE MODE SWITCHER
// -----------------------

var catModeSwitch = {
	'.changeToProduct li.products' : function(el){
		el.onclick = function(){
			switchCatalogueMode('group')
			return false;
		}
	},
	'.changeToVendor li.brands' : function(el){
		el.onclick = function(){
			switchCatalogueMode('vendor')
			return false;
		}
	}
}

Behaviour.register(catModeSwitch);

function switchCatalogueMode(catMode) {
	var actionChangeType = contextPath+"/_common/ajax-request/catalogue/change-type.jsp";
	new Ajax.Updater('catalogue', actionChangeType, {
		parameters:"catType="+catMode, evalScripts: true, onComplete: Behaviour.apply
	});
}

// JOB FORM FILE UPLOAD BUG FIX
// ----------------------------

/*var jobFormFileUploadFix = {
	'#jobForm' : function(el){
			el.onsubmit = function(){
				if(el.fileCopy){
					el.fileCopy.value=el.fileUpload.value;
				}
				
				return checkFormFields(el);
			}
	}
}

Behaviour.register(jobFormFileUploadFix);*/

// SEARCH 
// -----------------------
var searchEffects = {	
	'#showAdvanced' : function(el){
		el.onclick = function(){
			showHideAdvanced();
			return false;
		}
	}
}

Behaviour.register(searchEffects);

var Stoggle = 1;

function showHideAdvanced() {
	var advancedOptions = $('advancedOptions');
	if (Stoggle == 1) {
		new Effect.BlindDown('advancedOptions',{duration:0.5});
		$('showAdvanced').removeClassName('slideSearchDown');
		$('showAdvanced').addClassName('slideSearchUp');
		Stoggle= 2;
	} else {
		new Effect.BlindUp('advancedOptions',{duration:0.5});	
		$('showAdvanced').removeClassName('slideSearchUp');
		$('showAdvanced').addClassName('slideSearchDown');
		Stoggle = 1;
	}
}


// BASKET 
// -----------------------

var basketEffects = {
	'#showBasket' : function(el){
		el.onclick = function(){
			showHideBasket();
			return false;
		}
	},
	'.AjaxMinus' : function(el){
		el.onclick = function(){
			removeItem(this.id);
			//subtractItem(this.id);
			return false;
		}
	},
	'.AjaxAdd' : function(el){
		el.onclick = function(){
			addItem(this.id);
			return false;
		}
	}
}

Behaviour.register(basketEffects);

var Btoggle = 1;

function showHideBasket() {
	var basketItems = $('basketItems');
	if (Btoggle == 1) {
		new Effect.BlindDown('basketItems',{duration:0.5});
		$('showBasket').innerHTML = "hide basket contents";	
		$('showBasket').removeClassName('slideBasketDown');
		$('showBasket').addClassName('slideBasketUp');
		$('itemCountContainer').style.display='none';
		Btoggle= 2;
	} else {
		new Effect.BlindUp('basketItems',{duration:0.5});
		$('showBasket').innerHTML = "show basket contents";		
		$('showBasket').removeClassName('slideBasketUp');
		$('showBasket').addClassName('slideBasketDown');
		$('itemCountContainer').style.display='block';
		Btoggle = 1;
	}
}


function removeItem(itemID) {
	var itemID = itemID.replace('delItem-', '');
	var basketItem = "basketItem-"+itemID;
	//new Effect.Puff(basketItem,{duration:0.5});
	var basketRemove = contextPath+"/_common/ajax-request/basket/_actions/remove.jsp";	
	new Ajax.Request(basketRemove, {
	 onSuccess : function(resp) {
		 var qty = $("qty-"+itemID)
		 var quantity = contextPath+"/_common/ajax-request/basket/_qtyOfItem.jsp?productId="+itemID;
		 new Ajax.Request(quantity, {
			onSuccess : function(resp) {
				if(resp.responseText>0){
					new Effect.Pulsate(qty,{duration:1.0});
					$(qty).innerHTML = resp.responseText;
				}else{
					new Effect.Puff(basketItem,{duration:0.5});
				}
			}
		 });
		 var basketPrice = contextPath+"/_common/ajax-request/basket/_total.jsp";
		 new Ajax.Updater("basketTotal",basketPrice);
		 var itemCount = contextPath+"/_common/ajax-request/basket/_noOfItems.jsp";
		 new Ajax.Request(itemCount, {
			onSuccess : function(resp) {
				$("itemCount").innerHTML = resp.responseText;
				var numItems = parseInt(resp.responseText);
				if (isNaN(numItems)) {
					showHideBasket(1);
					$("sideBasket").innerHTML = "<p>Your Basket is empty!</p>";
				}
			}
		 });
	 },
	 onFailure : function(resp) {
		 alert("opps, error updating basket");
	 },
	  parameters : "key="+itemID+"&quantity=1",
	  evalScripts: true
	});	
}

/*function removeItem(itemID){
	var itemID = itemID.replace('delItem-', '');
	var basketItem = "basketItem-"+itemID;
	alert(basketItem);
	new Effect.Puff(basketItem,{duration:0.5});	
	//$("basketItem-"+itemID).innerHTML = 'boo';
}*/

function addItem(itemID) {
	var itemID = itemID.replace('addItem-', '');
	var id = $("id-"+itemID).value;	
	var productName = $("productName-"+itemID).value;
	var imageName = $("imageName-"+itemID).value;
	var imageCount = $("imageCount-"+itemID).value;
	var type = $("type-"+itemID).value;
	var quantity = 1;
	var basketAdd = contextPath+"/_common/ajax-request/basket/_actions/add.jsp";
	var pars = 'id=' + id + '&productName=' + productName + '&imageName=' + imageName + '&imageCount=' + imageCount + '&type=' + type + '&quantity=' + quantity;
	new Ajax.Request( basketAdd, {
		parameters: pars,
		onSuccess : function(resp) {
			var basketPrice = contextPath+"/_common/ajax-request/basket/_total.jsp";
			new Ajax.Updater("basketTotal",basketPrice);		
			var qty = $("qty-"+itemID)			
			new Effect.Pulsate(qty,{duration:1.0});
			var quantity = contextPath+"/_common/ajax-request/basket/_qtyOfItem.jsp?productId="+itemID;
			new Ajax.Updater("qty-"+itemID,quantity);
		},
		evalScripts: true
	});	
}

function subtractItem(itemID) {
	var itemID = itemID.replace('subtractItem-', '');
	var id = $("id-"+itemID).value;	
	var productName = $("productName-"+itemID).value;
	var imageName = $("imageName-"+itemID).value;
	var imageCount = $("imageCount-"+itemID).value;
	var type = $("type-"+itemID).value;
	var basketSubTract = contextPath+"/_common/ajax-request/basket/_actions/recalculate.jsp";
	var quantity = $("quantity-"+itemID).value - 1;
	var pars = itemID+'=' + quantity;
	new Ajax.Request(basketSubTract, {
		parameters: pars,
		onSuccess : function(resp) {
			alert(resp.responseText);
		},
		onFailure : function(resp) {
			 alert("oops, there was a problem updating the basket");
		}
	});
	/*new Ajax.Request( basketAdd, {
		parameters: pars,
		onSuccess : function(resp) {
			var basketPrice = contextPath+"/_common/ajax-request/basket/_total.jsp";
			new Ajax.Updater("basketTotal",basketPrice);
			//var quantity = parseInt($("quantity-"+itemID).value);\
			//quantity++;
			
			//var qty = $("qty-"+itemID)
			
			var quantity = contextPath+"/_common/ajax-request/basket/_qtyOfItem.jsp?productId="+itemID;
			
			new Ajax.Updater("qty-"+itemID,quantity);
			
			//qty.innerHTML=quantity;
			new Effect.Pulsate(qty,{duration:1.0});
		},
		onFailure : function(resp) {
			 alert("you cant code shit");
		 },
		evalScripts: true
	});	*/
}

// Delete Puffs 
// -----------------------

/*var delPuffs = {
	'.address_delete' : function(el){
		el.onclick = function(){
			deleteAddress(this.id);
			return false;
		}
	},
	'.favourite-delete' : function(el){
		el.onclick = function(){
			deleteFavourite(this.id);
			return false;
		}
	}
}

Behaviour.register(delPuffs);*/

function deleteAddress(addressID) {
	var addressID = addressID.replace('address-', '');
	var rowID = "row-"+addressID;	
	var addressRemove = contextPath+"/_common/ajax-request/account/addresses/delete.jsp";	
	new Ajax.Request(addressRemove, {
	 onSuccess : function(resp) {		
		if(resp.responseText != 'ok') {
			alert(resp.responseText);
		} else {
			new Effect.Puff(rowID,{duration:0.5});
		}
		
	 },
	 onFailure : function(resp) {
		 alert("opps, error deleting address");
	 },
	  parameters : "addressID="+addressID,
	  evalScripts: true
	});	
}

function deleteFavourite(favouriteID) {
	var string = favouriteID.split("-");
	var tier1 = string[0];
	var favouriteID = string[2];
	
	//alert("t-"+tier1+"\nfid-"+favouriteID);
	var rowID = "row-"+favouriteID;	
	var favouriteRemove = contextPath+"/_common/ajax-request/account/favourites/remove.jsp";
	var tier1Check = contextPath+"/_common/ajax-request/account/favourites/total.jsp";
	new Ajax.Request(favouriteRemove, {
	 onSuccess : function(resp) {		
		if(resp.responseText != 'ok') {
			alert(resp.responseText);
		} else {
			/*new Ajax.Request(tier1Check, {
							 onSuccess : function(resp2) {
								alert("Response:'"+resp2.responseText+"'\nid:"+tier1);
								if(resp2.responseText=='exists'){
									new Effect.Puff(rowID,{duration:0.5});
								}else{
									new Effect.SlideUp(tier1,{duration:0.5});
								}
							 },
							 onFailure : function(resp2) {
								 alert("opps, error checking tier1");
							 },
							 parameters : "tier1="+tier1,
							  evalScripts: true
							});*/
			location.reload();
		}
		
	 },
	 onFailure : function(resp) {
		 alert("opps, error deleting favourite");
	 },
	  parameters : "favouriteID="+favouriteID,
	  evalScripts: true
	});
}

// CONFIRM ACTION 
// -----------------------

var confimThis = {
	'.confirmAction' : function(el){
		el.onclick = function(){
			var confResponse = confirm(el.getAttribute('title'));
			if (confResponse==true) {
				return;
			} else {
				return false;
			}
		}
	}
}
Behaviour.register(confimThis);


// COPY BILLING DETAILS 
// -----------------------

var copyBillingDetails = {
	'#copyBillingDetails' : function(el){
		el.onclick = function(){
			if (el.checked==true) {
				$('deliveryCompany').value = $F('billingCompanyName');
				$('deliveryAddress').selectedIndex = $('billingAddress').selectedIndex;
			} else {
				$('deliveryCompany').value='';
				$('deliveryAddress').selectedIndex =0;
			}
		}
	}
}
Behaviour.register(copyBillingDetails);

// COPY BILLING DETAILS  (LEAD)
// ----------------------------

var copyBillingDetailsLead = {
	'#copyBillingDetailsLead' : function(el){
		el.onclick = function(){
			if (el.checked==true) {
				$('deliveryCompanyName').value = $F('billingAltCompany');
				$('deliveryAddress').value = $F('billingAltAddress');
				$('deliveryCity').value = $F('billingAltCity');
				$('deliveryState').value = $F('billingAltState');
				$('deliveryPCode').value = $F('billingAltPCode');
				$('deliveryCountry').value = $F('billingAltCountry');
			} else {
				$('deliveryCompanyName').value='';
				$('deliveryAddress').value='';
				$('deliveryCity').value='';
				$('deliveryState').value='';
				$('deliveryPCode').value='';
				$('deliveryCountry').value='';
			}
		}
	}
}
Behaviour.register(copyBillingDetailsLead);

// JOB DETAILS
// -----------------------

var jobDetails = {
	'#view-job li a' : function(el){
		el.onclick = function(){
			if (el.className != 'active'){
				jobDetailsSwitcher(el.id)
			}
			return false;
		}
	}
}

/*  DISABLING ajax loading of job details
Behaviour.register(jobDetails);*/

function jobDetailsSwitcher(details) {
	var section = details.substr(0,details.indexOf('-'));
	var jobID = details.substr(details.indexOf('-')+1,details.length-1);
	var actionChangeType = contextPath+"/myaccount/myjobs/_job-"+section+".jsp";
	new Ajax.Updater('jobDetailsContainer', actionChangeType, {
		parameters:"jobID="+jobID,
		evalScripts: true,
		onComplete: Behaviour.apply,
		onSuccess: function(){
			var active = document.getElementsByClassName('active');
			active[0].removeClassName('active');
			$(details).addClassName('active');
			//alert($(details).childNodes[0]);
			//alert($(details).id);
			if(section=='all'){
				//$('view-job').addClassName('hide');
			}
		},
		onFaliure: function(resp){
			alert('Error: '+resp.responseText);
		}
	});
}


// JOB DETAILS: TAB HANDLING
// -----------------------

var showTabNav = {
	'#showTabs' : function(el){
		el.onclick = function(){
			//alert(el.value);
			showTabs(el.checked,el.value)
		}
	}
}

Behaviour.register(showTabNav);

function showTabs(checked,jobID) {
	var section;
	
	if (checked){
		$('view-job').removeClassName('hide');
		setCookie('viewTabs','yes',999);
		section = 'details';
	}else{
		$('view-job').addClassName('hide');
		setCookie('viewTabs','no',999);
		section = 'all';
	}
	
	$('jobDetailsContainer').innerHTML="<p><img src='"+contextPath+"/_common/media/general/loading.gif' /> Loading...</p>";
	var actionChangeType = contextPath+"/myaccount/myjobs/_job-"+section+".jsp";
	new Ajax.Updater('jobDetailsContainer', actionChangeType, {
		parameters:"jobID="+jobID,
		evalScripts: true,
		onComplete: Behaviour.apply,
		onSuccess: function(){
			active = document.getElementsByClassName('active');
			if(active.length>0){
				active[0].removeClassName('active');
			}
			//$('details-'+jobID).childNodes[0].addClassName('active');
			$('details-'+jobID).className='active';
		},
		onFaliure: function(resp){
			alert('Error: '+resp.responseText);
		}
	});
}

function setCookie(c_name,value,expiredays){
	var exdate=new Date()
	exdate.setDate(exdate.getDate()+expiredays)
	document.cookie=c_name+ "=" +escape(value)+
	((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}


// RESET BUTTON
// -----------------------

var resetButton = {
	'.reset' : function(el){
		el.onclick = function(){
			var backLink = $('backLink').value;
			
			location.href=backLink;
		}
	}
}

Behaviour.register(resetButton);

// CONTACT ACCOUNT MANAGER: LIGHTBOX
// ---------------------------------

var showLightbox = {
	'.contactAccountManager' : function(el){
		el.onclick = function(){
			$('overlay').style.display='block';
			$('lightbox').style.display='block';
			if(window.pageYOffset){
				$('lightbox').style.top=window.pageYOffset+75+'px';
			}else{
				window.scrollTo(0,0);
			}
			
			return false;
		}
	},
	'.closeLightbox' : function(el){
		el.onclick = function(){
			if(el.value == 'close'){
				$('lightboxDetails').style.display='block';
				$('emailAlert').style.display='none';
				//$('lightboxContent').style.backgroundImage="url("+contextPath+"/_common/media/backgrounds/lightbox-bg.gif)";
			}
			$('overlay').style.display='none';
			$('lightbox').style.display='none';
			
			return false;
		}
	},
	'.contactAccountManagerForm' : function(el){
		el.onsubmit = function(){			
			if(checkFormFields(this)){
				sendEmail()
			}
			
			return false;
		}
	}
}

Behaviour.register(showLightbox);

function sendEmail(){
	var customerName,customerPhone,customerEmail;
	var ownerName,ownerPhone,ownerEmail;
	var subject, message;
	
	customerName = $F('customerName');
	customerPhone = $F('customerPhone');
	customerEmail = $F('customerEmail');
	
	ownerName = $F('ownerName');
	//ownerPhone = $F('ownerPhone');
	ownerEmail = $F('ownerEmail');
	
	subject = $F('subject');
	message = $F('message');
	
	var emailSend = contextPath+"/_common/javascript/ajax-request/emails/_contact-account-manager.jsp";
		
	var params = "customerName="+customerName+"&customerPhone="+customerPhone+"&customerEmail="+customerEmail+"&ownerName="+ownerName+"&ownerEmail="+ownerEmail+"&subject="+subject+"&message="+message;
	
	new Ajax.Request(emailSend, {
	 onSuccess : function(resp) {
		 $('lightboxDetails').style.display='none';
		 $('emailAlert').style.display='block';
		 //$('lightboxContent').style.backgroundImage="url("+contextPath+"/_common/media/backgrounds/lightbox-bg-2.gif)";
	 },
	 onFailure : function(resp) {
		 alert("error sending email");
	 },
	  parameters : params,
	  evalScripts: true
	});	
}




// JOB TYPE ALERT
// -----------------------

jobTypes=$A(document.getElementsByName('typeID'));
jobTypes.each(function(el){
	if(el.value==202&&!el.checked) $$('.alert')[0].hide();
	el.onclick = function(){	
		if(this.value==202){
			$$('.alert')[0].show();
		}else{
			$$('.alert')[0].hide();
		}
	}
});