/*****************************************************
Function: copy data from one element to the other
		copy data from one select to another
		set text to an element
		enable/disable form element
******************************************************/

function copyData(from,to){
	var tempFrom = document.getElementById(from);
	var tempTo = document.getElementById(to);

	tempTo.value = tempFrom.value;
}

function copyDataSelect(form,from,to){
	document.forms[form][to].options.selectedIndex = document.forms[form][from].selectedIndex;
}

function setFormElementData(element,text){
	document.getElementById(element).value = text;
}

function enableDisableFormElement(form,element,type){ // type: true = disable ; false = enable
	var theForm = document.forms[form];
	var theElement = theForm[element];
	
	if(type){
		theElement.disabled = true;
	}else{
		theElement.disabled = false;
	}
}

function enableDisableForm(type){ // type: true = disable ; false = enable
	var inputs = document.getElementsByTagName('input');
	
	if(inputs){
		for(i=0;i<inputs.length;i++){
			if(inputs[i].id.toUpperCase() != "OK"){
				inputs[i].disabled = type;
			}
		}
	}
}

function setFieldFocus(form,sField){
	var theForm = document.forms[form][sField].focus();
}

function getSelectData(form,id){
	box = document.forms[form][id];
	alert(box.options[box.selectedIndex].value);	
}
/******************************************************
Function: check fields to make sure there is 
		something in it!  If fieldlist containts
		email, check to make sure the email address
		is valid!
******************************************************/
function CheckEmail(sEmail){
	str = document.getElementById(sEmail).value;
	var Errors = false;
	var Emailerrors = false;
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if(str == ""){
		Emailerrors = true;	
	}
	if (str.indexOf(at)==-1){
	  Emailerrors = true;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   Emailerrors = true;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		Emailerrors = true;
	}

	 if (str.indexOf(at,(lat+1))!=-1){
		Emailerrors = true;
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		Emailerrors = true;
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
		Emailerrors = true;
	 }
	
	 if (str.indexOf(" ")!=-1){
		Emailerrors = true;
	 }
	 if(Emailerrors){
		alert("Sorry, your email address is invalid!");
		return false;
	 }else{
		return true;	 
	 }
}
function CheckFields(sFields){
	var errors = false;
	var ErrorMsg = "Please enter a:\n\n";
	var temp = 0;
	ElementArr = sFields.split("|");
	for(i=0; i<ElementArr.length; i++){
		if(!document.getElementById(ElementArr[i]).value){
			temp = seperateText(ElementArr[i]);
			ErrorMsg += temp + "\n";
			alert(ErrorMsg);
			return false;
			errors = true;
		}
	}
	if(errors == true){
		alert(ErrorMsg)
		return false;
	}else{
		return true;
	}
}

/*****************************************************
Function: for mulitple selects, set the whole box as
		selected
******************************************************/
function selectAllSB(selectBox){
	var sb = document.getElementById(selectBox);
	
	for(i=0;i<sb.lenth;i++){
		sb[i].setAttribute('selected','selected');
	}	
}

/*****************************************************
Function: credit card validation
******************************************************/
function validateCC(ccType,ccNumber){
	var cardNumber = ccNumber;
	var isValid = false;
	var ccCheckRegExp = /[^\d ]/;
	isValid = !ccCheckRegExp.test(cardNumber);
	
	if (isValid)
	{
	var cardNumbersOnly = cardNumber.replace(/ /g,"");
	var cardNumberLength = cardNumbersOnly.length;
	var lengthIsValid = false;
	var prefixIsValid = false;
	var prefixRegExp;

	switch(ccType)
	{
	case "1": //ammex
	   lengthIsValid = (cardNumberLength == 15);
	   prefixRegExp = /^3(4|7)/;
	   break;
	
	case "3": //mastercard
	   lengthIsValid = (cardNumberLength == 16);
	   prefixRegExp = /^5[1-5]/;
	   break;
	
	 case "4": //visa
	   lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
	   prefixRegExp = /^4/;
	   break;
	
	 
	}
	
	prefixIsValid = prefixRegExp.test(cardNumbersOnly);
	isValid = prefixIsValid && lengthIsValid;
	}
	
	if (isValid)
	{
	var numberProduct;
	var numberProductDigitIndex;
	var checkSumTotal = 0;
	
	for (digitCounter = cardNumberLength - 1; digitCounter >= 0; digitCounter--)
	{
	 checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
	 digitCounter--;
	 numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
	 for (var productDigitCounter = 0;
	   productDigitCounter < numberProduct.length; 
	   productDigitCounter++)
	 {
	   checkSumTotal += 
		parseInt(numberProduct.charAt(productDigitCounter));
	 }
	}
	
	isValid = (checkSumTotal % 10 == 0);
	}
	return isValid;
}

/*****************************************************
Function: get a field name, seperate by uppercase
******************************************************/
function seperateText(elementName){
	var temp = elementName.substr(0,1);
	
	for(i=1;i<elementName.length;i++){
		if( (elementName.charCodeAt(i) >= 65) && (elementName.charCodeAt(i)<=90)){
			temp += " " + elementName.substr(i,1);
		}else{
			temp += elementName.substr(i,1);
		}
	}
	return temp;
}


/*****************************************************
Function: check cart page
******************************************************/
function checkOrder(){
	var qtyCheck = document.getElementById("qty");
	var errorMsg = "Qty must be more than 0";
	
	if(qtyCheck.value > 0){
		return true;
	}else{
		alert(errorMsg);	
		return false;
	}
}

/*****************************************************
Function: copy billing to shipping
******************************************************/
function billingShippingSame(){
	var same = document.getElementById("postalsame");
	
	if(same.checked){
		copyData("BillingFirstName","ShippingFirstName");
		copyData("BillingLastName","ShippingLastName");
		copyData("BillingPhone","ShippingPhone");
		copyData("BillingEmail","ShippingEmail");
		copyData("BillingAddress","ShippingAddress");
		copyData("BillingAddress2","ShippingAddress2");
		copyData("BillingSuburb","ShippingSuburb");
		copyData("BillingState","ShippingState");
		copyData("BillingPostcode","ShippingPostcode");
		copyDataSelect("shopping","BillingCountry","ShippingCountry")
	}else{
		setFormElementData("ShippingFirstName","");
		setFormElementData("ShippingLastName","");
		setFormElementData("ShippingPhone","");
		setFormElementData("ShippingEmail","");
		setFormElementData("ShippingAddress","");
		setFormElementData("ShippingAddress2","");
		setFormElementData("ShippingSuburb","");
		setFormElementData("ShippingState","");
		setFormElementData("ShippingPostcode","");
	}
}


/*****************************************************
Function: check shipping/billing page
******************************************************/

function checkShipping(){
	var billingFieldCheck = CheckFields('BillingFirstName|BillingLastName|BillingPhone|BillingEmail|BillingAddress|BillingSuburb|BillingState|BillingPostcode');
	var billingEmailCheck = CheckEmail("BillingEmail");
	if((!billingFieldCheck) || (!billingEmailCheck)){
		return false;	
	}
	

	var shippingFieldCheck = CheckFields('ShippingFirstName|ShippingLastName|ShippingPhone|ShippingEmail|ShippingAddress|ShippingSuburb|ShippingState|ShippingPostcode');
	var shippingEmailCheck = CheckEmail("ShippingEmail");
	if((!shippingFieldCheck) || (!shippingEmailCheck)){
		return false;	
	}
	
	return true;
}

/*****************************************************
Function: check cc
******************************************************/
function checkPayment(){
	var fieldCheck = CheckFields('PaymentType|CardNumber|SecurityCode|NameOnCard|ExpiryYearMonth|ExpiryYear');
	var ccType = document.getElementById("PaymentType").value;
	var ccNumber = document.getElementById("CardNumber").value.replace(/ /,"");
	
	if(fieldCheck){
		var ccCheck = validateCC(ccType,ccNumber);
		if(!ccCheck){
			alert("Please enter a valid credit card number");
			return false;
		}else{
			return true;	
		}
	}else{
		return false;	
	}
}

/*****************************************************
Function: check contact form
******************************************************/
function checkContactForm(){
	var fieldCheck = CheckFields('Name|Email|Message');	
	if(!fieldCheck){
		return false;
	}else{
		var emailCheck = CheckEmail("Email");
		if(!emailCheck){
			return false;	
		}else{
			return true;	
		}
	}
}