//	All of the front end JS should be kept in here
// 	Created by Tom Jenkins
//	Date 12/08/2005

//  Validations...

function valSearch(){
	var theForm = document.searchCriteriaForm;
	if ((theForm.searchCriteria.value=='')||(theForm.searchCriteria.value=='Search site here')){
		alert('Please enter something to search on');
		return false
	}
return true
}

function clearSearch(){
	var theForm = document.searchCriteriaForm;	
	theForm.searchCriteria.value='';
}

function checkFormContact()
{
	var theForm = document.Enquiry;
	
	
	
			if ( !RequiredSelect(theForm.Title,'Please select your title') ) { return false; }
			if ( !RequiredInput(theForm.FirstName,'Please enter your first name') ) { return false; }
			if ( !RequiredInput(theForm.Lastname,'Please enter your last name') ) { return false; }
			if ( !RequiredInput(theForm.Email,'Please enter an email address') ) { return false; }			
			if ( !ValidateEmail(theForm.Email,'Please enter a valid email address') ) { return false; }
			if ( !RequiredInput(theForm.Comment,'Please enter your enquiry / comment') ) { return false; }
	
	
	return true;
}

function checkFormSignup()
{
	var theForm = document.UserSignUp;		
	
			if ( !RequiredSelect(theForm.Title,'Please select your title') ) { return false; }
			if ( !RequiredInput(theForm.FirstName,'Please enter your first name') ) { return false; }
			if ( !RequiredInput(theForm.Lastname,'Please enter your last name') ) { return false; }
			if ( !RequiredInput(theForm.Email,'Please enter an email address') ) { return false; }	
			if ( !ValidateEmail(theForm.Email,'Please enter a valid email address') ) { return false; }
			if ( !RequiredInput(theForm.Password,'Please enter a password') ) { return false; }
			if ( !RequiredInput(theForm.CPassword,'Please confirm your password') ) { return false; }
			if ( theForm.CPassword.value != theForm.Password.value){
				alert('Please make sure your passwords match');
				return false;
			}
			if ( !RequiredSelect(theForm.Country,'Please select a country') ) { return false; }
			
			
	return true;
}

function subscribeForm()
{
	var theForm = document.subscribe;
	
	if ( !RequiredInput(theForm.SubcribeEmail,'Please enter an email to subscribe') ) { return false; }
	if ( !ValidateEmail(theForm.SubcribeEmail,'Please enter a valid email address') ) { return false; }
	if ( theForm.SubcribeEmail.value=='Enter Email' ){	
	alert('Please enter an email to subscribe');
	theForm.SubcribeEmail.focus();
	return false;
	}
	return true;
}

function checkLogin()
{
	var theForm = document.Login;
	
	if ( !RequiredInput(theForm.username,'Please enter your username') ) { return false; }
	if ( !ValidateEmail(theForm.username,'Please check to make sure this is a valid email address') ) { return false; }
	if ( !RequiredInput(theForm.password,'Please enter your password') ) { return false; }
	
	return true;
}

//	Image Rollovers...

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
   
   
   
}

function LightBoxSwitch(lightLink){
	if(document.getElementById('lightBoxLink')){
		//Lightbox enabled
		document.getElementById('lightBoxLink').href=lightLink
   	}
}
	

//  Collapse frontend code ...

var enablepersist="off" //Enable saving state of content structure using session cookies? (on/off)
var collapseprevious="yes" //Collapse previously open content when opening present? (yes/no)

if (document.getElementById){
document.write('<style type="text/css">')
document.write('.switchcontent{display:none;}')
document.write('</style>')
}

function getElementbyClass(classname){
ccollect=new Array()
var inc=0
var alltags=document.all? document.all : document.getElementsByTagName("*")
for (i=0; i<alltags.length; i++){
if (alltags[i].className==classname)
ccollect[inc++]=alltags[i]
}
}

function contractcontent(omit){
var inc=0
while (ccollect[inc]){
if (ccollect[inc].id!=omit)
ccollect[inc].style.display="none"
inc++
}
}

function expandcontent(cid){
if (typeof ccollect!="undefined"){
if (collapseprevious=="yes")
contractcontent(cid)
document.getElementById(cid).style.display=(document.getElementById(cid).style.display!="block")? "block" : "none"
}
}

function revivecontent(){
contractcontent("omitnothing")
selectedItem=getselectedItem()
selectedComponents=selectedItem.split("|")
for (i=0; i<selectedComponents.length-1; i++)
document.getElementById(selectedComponents[i]).style.display="block"
}

function get_cookie(Name) { 
var search = Name + "="
var returnvalue = "";
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) { 
offset += search.length
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}

function getselectedItem(){
if (get_cookie(window.location.pathname) != ""){
selectedItem=get_cookie(window.location.pathname)
return selectedItem
}
else
return ""
}

function saveswitchstate(){
var inc=0, selectedItem=""
while (ccollect[inc]){
if (ccollect[inc].style.display=="block")
selectedItem+=ccollect[inc].id+"|"
inc++
}

document.cookie=window.location.pathname+"="+selectedItem
}

function do_onload(){
getElementbyClass("switchcontent")
if (enablepersist=="on" && typeof ccollect!="undefined")
revivecontent()
}


if (window.addEventListener)
window.addEventListener("load", do_onload, false)
else if (window.attachEvent)
window.attachEvent("onload", do_onload)
else if (document.getElementById)
window.onload=do_onload

if (enablepersist=="on" && document.getElementById)
window.onunload=saveswitchstate


function isFilled( elm ) { 
	if (  elm != null ) {
		if ( elm.value == "" || elm.value == null ) {
			return false									;
		}
		else {
			return true									;
		}
	}
}

function TopLevel(SectionID, RealURL){
	document.AccessMenu.TopSecID.value=SectionID;
	document.AccessMenu.TopSubID.value='';
	document.AccessMenu.TopSubPageID.value='';
	document.AccessMenu.TopPageID.value='';
	document.AccessMenu.action=RealURL;
	document.AccessMenu.submit();
}
function SubLevel(SectionID, RealURL){
	document.AccessMenu.TopSubID.value=SectionID;
	document.AccessMenu.TopSubPageID.value='';
	document.AccessMenu.TopPageID.value='';
	document.AccessMenu.action=RealURL;
	document.AccessMenu.submit();
}
function SubPageLevel(PageID, RealURL){
	document.AccessMenu.TopSubPageID.value=PageID;
	document.AccessMenu.TopSubID.value='';
	document.AccessMenu.TopPageID.value='';
	document.AccessMenu.action=RealURL;
	document.AccessMenu.submit();
}
function SubHomePageLevel(PageID, SectionID, RealURL){
	document.AccessMenu.TopSubPageID.value=PageID;
	document.AccessMenu.TopSubID.value=SectionID;
	document.AccessMenu.TopPageID.value='';
	document.AccessMenu.action=RealURL;
	document.AccessMenu.submit();
}
function PageLevel(PageID, RealURL){
	document.AccessMenu.TopPageID.value=PageID;
	document.AccessMenu.action=RealURL;
	document.AccessMenu.submit();
}

function ExpandSub(SectionID){

	var DivID='SubSection'+SectionID;
	var DivElement=document.getElementById(DivID);	
	var DivElements = document.getElementsByTagName("div");
	var currentDiv;
	var mySubSectionExp;
	var Count=0;

	mySubSectionExp = /SubSection([0-9]+)/g;
	
	for (currentDiv in DivElements)
	{
		Count ++ ;
		var varDiv='SubSection'+Count;		
		if(varDiv.search(mySubSectionExp) == 0)
		{				
			var var1=document.getElementById(String(varDiv));
			
			if (var1 != null){		
				var1.style.display='none';				
			}
		}
	}

	if (DivElement.style.display=='none'){
		DivElement.style.display=''
	}else{
		DivElement.style.display='none'
	}

}

function Quantity(id,dir){								
	var i='quantity'+id;						
	var a=document.getElementById(String(i));								
	if(a.value==''){a.value=1;return false;}									
	//Increment
	if(dir==1){																	
		if(a.value>=0){									
			var b=Number(a.value)+1;
			if(b<100){a.value=Number(a.value)+1;}else{alert('You can only order a maximum of 99 items at any one time.');}								
		}else{alert('This is not a real quantity. Please enter a numeric quantity.');}									
	} 
	//decrement								
	if(dir==2){																
		if(a.value<=99){									
			var b=Number(a.value)-1;
			if(b>0){a.value=Number(a.value)-1;}							
		}else{alert('This is not a real quantity. Please enter a numeric quantity.');}									
	}					
}

function QuantityCheck(StockID,Quantity,SubID){
	if(confirm('Are you sure you wish to remove this product from your basket?')){
		window.location='/frontend/shop/basket/Basket-Add.cfm?ID='+StockID+'&quantity='+Quantity+'&SubID='+SubID;
	}
}

function ReturnLoginForm()
{
	var theForm = document.Form;
	if ( !RequiredInput(theForm.ReturnUsername,'Please enter your email address') ) { return false; }
	if ( !ValidateEmail(theForm.ReturnUsername,'Please enter a valid email address ') ) { return false; }
	if ( !RequiredInput(theForm.ReturnPassword,'Please enter your password') ) { return false; }
	return true;
}

function NewLoginForm(){
	var theForm = document.Form;
	if ( !RequiredInput(theForm.NewUsername,'Please enter your email address') ) { return false; }
	if ( !RequiredInput(theForm.NewPassword,'Please enter your password') ) { return false; }
	if ( !RequiredInput(theForm.NewConfirmPassword,'Please confirm your password') ) { return false; }
	if ( theForm.NewPassword.value != theForm.NewConfirmPassword.value){
		alert('Please make sure your passwords match');
		theForm.NewPassword.value='';
		theForm.NewConfirmPassword.value='';
		return false;
	}
	return true;
}

function UserForm(no)
{
	var theForm = document.Form;
	
	if ( !RequiredInput(theForm.UserTitle,'Please select a title') ) { return false; }
	if ( !RequiredInput(theForm.FirstName,'Please enter your firstname') ) { return false; }
	if ( !RequiredInput(theForm.Surname,'Please enter your surname') ) { return false; }
	if ( !RequiredInput(theForm.DayPhone,'Please enter your daytime telephone') ) { return false; }
	if ( !RequiredInput(theForm.EmailAddress,'Please enter your email address') ) { return false; }
	if ( !ValidateEmail(theForm.EmailAddress,'Please enter a valid email address ') ) { return false; }
	
	
	
	
	if ( !RequiredInput(theForm.Address1,'Please enter the first line of your address ') ) { return false; }
	if ( !RequiredInput(theForm.Town,'Please enter the town / city where you live') ) { return false; }
	
	/*if ( !RequiredInput(theForm.Country,'Please select the country in which you reside ') ) { return false; }*/
		
	if ($('Country').options[$('Country').selectedIndex].text.indexOf("UK - ")!=-1){
		if ( !RequiredInput(theForm.PostCode,'Please enter your postcode') ) { return false; }
	}
	
	if(no==1){
		if ( !RequiredInput(theForm.CreatePass,'Please enter a password') ) { return false; }
		if ( !RequiredInput(theForm.ConfirmPass,'Please enter a password') ) { return false; }
		if (theForm.CreatePass.value!=theForm.ConfirmPass.value){
			
			alert('Please make sure your 2 passwords match');
			return false;
		}
	}
	
	return true;
}

function DeliveryDetailsCheckForm()
{
	var theForm = document.personalise;
	
if ( !RequiredInput(theForm.UserTitle,'Please enter a title') ) { return false; }
if ( !RequiredInput(theForm.FirstName,'Please enter a last name') ) { return false; }
if ( !RequiredInput(theForm.Surname,'Please enter a last name') ) { return false; }
if ( !RequiredInput(theForm.Address1,'Please enter a first address line') ) { return false; }
if ( !RequiredInput(theForm.Town,'Please enter a town') ) { return false; }

if (document.getElementById('chkPostcode') && document.getElementById('chkPostcode').checked){	
}else{
	if ( !RequiredInput(theForm.PostCode,'Please enter a postcode') ) { return false; }
}
if ( !RequiredInput(theForm.Country,'Please select a delivery country') ) { return false; }

return true;
}

function TandC(){
	var a=document.getElementById('Terms');
	var b=document.getElementById('check');						
	
	if(a.value==0){
		a.value=1;
		b.className='payment_tc_checked';
	}else if(a.value==1){
		a.value=0;
		b.className='payment_tc_unchecked';
	}
}

function PayementDetailsCheckForm(ValidFrom, ValidTo, m, CurYear, CurMonth, CC)
{
	var theForm = document.payment;
	var outp = 0;
	var t = ""; 
	var n = 0;
	var ValidLen = String(ValidFrom).length;
	var ValidYear = String(ValidFrom).substring(ValidLen, ValidLen - m);
	var ValidMonth = String(ValidFrom).substring(0,m);
	var iLen = String(ValidTo).length;
	var ExpYear = String(ValidTo).substring(iLen, iLen - m);
	var ExpMonth = String(ValidTo).substring(0,m);
	
	if ( !RequiredInput(theForm.CCType,'Please select a credit card') ) { return false; }
	if ( !RequiredInput(theForm.CardNumber,'Please enter your credit card number') ) { return false; }
	
	  var CC = CC.replace(/ /g, "");
	
	  for (i = 0; i <= CC.length; i++) { 
		outp = CC.charAt (i) + outp 
	  }   
	  
	  for (i = 0; i < outp.length; i++) {
		c = parseInt(outp.charAt(i), 10);
		if (i % 2 != 0)
		  c *= 2;
		t = t + c;
	  }
	
	  for (i = 0; i < t.length; i++) {
		c = parseInt(t.charAt(i), 10);
		n = n + c;
	  }
	
	if (n != 0 && n % 10 == 0){
			
	}else{
		alert('Your credit card number has been entered incorrectly. Please double check this.');  
		return false;
	}	
	if ( !RequiredInput(theForm.CardHolder,'Please enter the name on your credit card') ) { return false; }
	if (ValidFrom != ''){
	
		if (ValidLen != 5){
			alert("Your expiry date must be entered MM/YY");
			theForm.ValidFrom.focus();
			return false
		}
			
		if ( (ValidMonth > CurMonth) && (ValidYear >= CurYear)){
			alert('The valid from date you have entered is in the future.  Please check and enter this again.');
			theForm.ValidFrom.focus();
			return false
		}
		
		if ( ValidYear > CurYear ){
			alert('The valid from date you have entered is in the future.  Please check and enter this again.');
			theForm.ValidFrom.focus();
			return false
		}
	}		
	if ( !RequiredInput(theForm.ValidTo,'Please enter the expiry date on the credit card') ) { return false; }
	if (iLen != 5){
		alert("Your expiry date must be entered MM/YY");
		return false
	}
	if ( (ExpMonth < CurMonth) && (ExpYear <= CurYear)){
		alert('The expiry date you have entered is in the past.  Please check and enter this again.');
		return false
	}
	if ( ExpYear < CurYear ){
		alert('The expiry date you have entered is in the past.  Please check and enter this again.');
		return false
	}	
	if ( !RequiredInput(theForm.SecurityNumber,'Please enter the security number as shown on your credit card') ) { return false; }
	if ( (theForm.CCType.value == 1) && (String(theForm.SecurityNumber.value).length != 4) ){
		alert('American express requires a 4 digit security code. Please make sure you have entered the correct number');
		return false
	}	
	if ( (theForm.CCType.value != 1) && (String(theForm.SecurityNumber.value).length != 3) ){
		alert('This credit card requires a 3 digit security code. Please make sure you have entered the correct number');
		return false
	}	
	
	//if ( !RequiredInput(theForm.BillingFirstname,'Please enter a first name') ) { return false; }
	//if ( !RequiredInput(theForm.BillingLastname,'Please enter a surname') ) { return false; }
	//if ( !RequiredInput(theForm.Address1,'Please enter a first address line') ) { return false; }
	//if ( !RequiredInput(theForm.Town,'Please enter a town') ) { return false; }
	//if ( !RequiredInput(theForm.PostCode,'Please enter a postcode') ) { return false; }
	//if ( !RequiredInput(theForm.Country,'Please select a country') ) { return false; }
	
	if ( theForm.check.checked==false){
		alert('Please check that you have read our terms and conditions and tick the box to proceed');
		return false
	}	

return true;
}

function changeIssue(DDvalue){
	if((DDvalue==2)||(DDvalue==4)){
		document.getElementById('issue').style.visibility='visible';
	}else{
		document.getElementById('issue').style.visibility='hidden';
	}
}


function submitResult(qn){
		new Ajax.Request('/ajax/pollsubmit.cfm?PolVar='+$('PolVar').value + '&qn='+qn + '&ck='+getCookie('POLSTARTED'),
		  {
			method:'get',
			onSuccess: function(transport){
			  var response = transport.responseText || "no response text";
				$("PollContainer").style.display ='none';
				$("Poll").innerHTML = response;
				
				new Effect.Appear(document.getElementById('PollContainer'));
				//new Effect.SlideDown();
			},
			onFailure: function(){ 
				 
			 }
		  });
	}
	
	
function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    { 
    c_start=c_start + c_name.length+1; 
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    } 
  }
return "";
}	

function xx_set_visible(id, e, value){

	if (!xx_supported_client()) return ;

	xx_get_by_id(id).style.visibility= value ? "visible" : "hidden";

	if(value) xx_move_tag(id,e);

	xx_get_by_id(id).style.display=value ? "" : "none";

}

function xx_move_tag(id,e){

	if (!xx_supported_client()) return ;

	var popup = xx_get_by_id(id);

	if (popup.style.visibility!="visible") return ;

	var ie=document.all;

	var ns6=!(!document.getElementById || ie)   ; /*document.getElementById AND !document.all*/

	var iebody = !(!document.compatMode || document.compatMode=="BackCompat")? document.documentElement

 : document.body;

	var dx = 10, dy = 10;

	var posX=(ns6)?e.pageX : event.x+iebody.scrollLeft;

	var posY=(ns6)?e.pageY : event.y+iebody.scrollTop;

	if(ie || ns6) {

		var parent = popup.offsetParent ;

		while(parent) {		

			posX -= parent.offsetLeft;

			posY -= parent.offsetTop;

			parent=parent.offsetParent;

		}

	}

	var ieNOTopera = !(!ie || window.opera);	

	var rightedge= ieNOTopera ? iebody.clientWidth-event.clientX: window.innerWidth-e.clientX-20

	var bottomedge=ieNOTopera ? iebody.clientHeight-event.clientY : window.innerHeight-e.clientY-20

	if (xx_less(rightedge-dx,popup.offsetWidth))

		posX=ie? iebody.scrollLeft+event.clientX-popup.offsetWidth : window.pageXOffset+e.clientX-popup.offsetWidth

;

	if (xx_less(bottomedge-dy,popup.offsetHeight)) {

		posY=ie? iebody.scrollTop+event.clientY-popup.offsetHeight : window.pageYOffset+e.clientY-popup.offsetHeight

;

		dy =-dy;

	}

	popup.style.left=posX+dx+"px";

	popup.style.top=posY+dy+"px" ;

}

function xx_less(l,r) { return Math.max(l-r,0) == 0 ; /* l LE r */}

function xx_and(l, r) { return   !(!l || !r);         /*l AND r */}

function xx_supported_client() { 	return (document.all) || (document.getElementById);}

function xx_get_by_id(id) { return document.all? document.all[id]: document.getElementById? document

.getElementById(id) : "" }



	
	 function typeVal(elementtypeid,elementvalueid,elementvaluename,itemname,stockid){
                    this.elementtypeid = elementtypeid;
                    this.elementvalueid = elementvalueid;
                    this.elementvaluename = elementvaluename;
                    this.itemname = itemname;
                    this.stockid = stockid;
                }
                
                function buildCombo(typeid,element,stocklist){
                   
					$(element).innerHTML = '';
                    $(element).options[$(element).options.length] = new Option("Please Select",-1);
                    var alreadyadded = new Array(0);
                    for (var i=0;i<JSObject.length;i++){
                        if ((JSObject[i].elementtypeid==typeid) && (!(alreadyadded.include(JSObject[i].elementvalueid)))){
                            
                            if (stocklist.length!=0){
                                if ((JSObject[i].elementtypeid==typeid) && (stocklist.include(JSObject[i].stockid))){
                                    $(element).options[$(element).options.length] = new Option(JSObject[i].elementvaluename,JSObject[i].stockid);
                                    alreadyadded.push(JSObject[i].elementvalueid);
									if (stocklist.length==1 && ($(element).selectedIndex !=0) || !built){
										// handle single option - auto submit.
										// default stockitem values.
                                        $(element).selectedIndex = 1;
                                        if (built){
											document.getElementById('SelectedStockID').value=JSObject[i].stockid;
                                        	document.Product.submit();
                                    	}	
																		
									}else{
										$(element).selectedIndex = 0;
									}
                                        
                                }
                            }else{
								//
                                $(element).options[$(element).options.length] = new Option(JSObject[i].elementvaluename,JSObject[i].stockid);
                                alreadyadded.push(JSObject[i].elementvalueid);
								$(element).selectedIndex = 0;
                            }
                        }
                    }
					
					
                }
                
                                            
                function fnCountValues(theArray,theValue){
                    var localcount = 0;
                    for (var i=0;i<theArray.length;i++){
                        if (theArray[i] == theValue){
                            localcount++;
                        }
                    }
                    return localcount;
                }