/*****************************************************
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');
	var selectbox = document.getElementsByTagName('select');
	var textbox = document.getElementsByTagName('textarea');
	var checkbox = document.getElementsByTagName('checkbox');
	var radio = document.getElementsByTagName('radio');
	
	if(inputs){
		for(i=0;i<inputs.length;i++){
			inputs[i].disabled = type;
		}
	}
	
	if(selectbox){
		for(i=0;i<selectbox.length;i++){
			selectbox[i].disabled = type;
		}
	}
	
	if(textbox){
		for(i=0;i<textbox.length;i++){
			textbox[i].disabled = type;
		}
	}
	
	if(checkbox){
		for(i=0;i<checkbox.length;i++){
			checkbox[i].disabled = type;
		}
	}
	
	if(radio){
		for(i=0;i<radio.length;i++){
			radio[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 CheckFieldsHTML(sFields){
	var errors = false;
	var ErrorMsg = "Please enter a:<br><br>";
	var temp = "";
	ElementArr = sFields.split("|");
	for(i=0; i<ElementArr.length; i++){
		if(!document.getElementById(ElementArr[i]).value){
			ErrorMsg += ElementArr[i].replace(/([A-Z])/g," $1") + "<br>";  //if a capital letter is found, seperate words with a space
			errors = true;
		}
	}
	if(errors == true){
		//alert(ErrorMsg)
		ErrorMsg += "<br><input type='button' onClick='hidePopup();' value='close'>";
		changePopupTitle("Error!");
		changePopupContent(ErrorMsg);
		showPopUp();
		return false;
	}else{
		if(sFields.indexOf("Email") != -1){
			var validEmail = CheckEmail("Email");
			if(!validEmail){
				return false;	
			}else{
				return true;	
			}
		}else{	
			return true;
		}
	}
}

function CheckFields(sFields){
	var errors = false;
	var ErrorMsg = "Please enter a:\n\n";
	var temp = "";
	ElementArr = sFields.split("|");
	for(i=0; i<ElementArr.length; i++){
		if(!document.getElementById(ElementArr[i]).value){
			ErrorMsg += ElementArr[i].replace(/([A-Z])/g," $1") + "\n";  //if a capital letter is found, seperate words with a space
			errors = true;
		}
	}
	if(errors == true){
		alert(ErrorMsg)
		return false;
	}else{
		if(sFields.indexOf("Email") != -1){
			var validEmail = CheckEmail("Email");
			if(!validEmail){
				return false;	
			}else{
				return true;	
			}
		}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: custom
******************************************************/
function addManagedToWatcher(){
	var managedBy = MM_findObj("compUsersDD");
	var watchers = document.getElementsByName("watcher");
	var watcherList = "";
	
	if(watchers){
		for(i=0;i<watchers.length;i++){
			if(watchers[i].value == managedBy.value){
				watchers[i].checked = true;
			}
		}
	}
}

function CheckAddUser(){
	var email1 = $('Email');
	var email2 = $('ReEnterEmail');
	var clientID = $('ID');
	
	var pass1 = $('Password');
	var pass2 = $('ReEnterPassword');
	
	if(!clientID.value){	//new user
	
		if(!email1.value || !email2.value || !pass1.value || !pass2.value){
			alert("Please fill in all required fields!");
			return false;
		}
		
		if(email1.value != email2.value){
			alert("Sorry, your email addresses do not match");
			return false;
		}
		
		if(!CheckEmail('Email') || !CheckEmail('ReEnterEmail')){
			return false;	
		}
		
		if(pass1.value != pass2.value){
			alert("Sorry, your passwords don't match.  Please try agani");
			return false;
		}
	}else{	//existing user
		if(!email1.value || !email2.value){
			alert("Please fill in all required fields!");
			return false;
		}
		
		if(!CheckEmail('Email') || !CheckEmail('ReEnterEmail')){
			return false;	
		}
		
		if(email1.value != email2.value){
			alert("Sorry, your email addresses don't match.  Please try agani");
			return false;
		}	
	}
	
	return true;
}

function CheckCookingClass(){
	//('ClassTitle|Date|startTime_Hour|endTime_Hour|NumberOfSpaces|RRP')
	var title = $('ClassTitle');
	var date = $('Date');
	var startHour = $('startTime_Hour');
	var endHour = $('endTime_Hour');
	var numSpaces = $('NumberOfSpaces');
	var price = $('RRP');
	
	if(!title.value || !date.value || !startHour.value || !endHour.value || !numSpaces.value || !price.value){
		alert("Please fill in all required fields!");
		return false;
	}
	
	temp = date.value.split("/");
	
	var classDate = new Date();
	classDate.setFullYear(temp[2],temp[1]-1,temp[0]);
	
	var currentDate = new Date();
	
	if(classDate<currentDate){
		alert("Your date must be after today");
		return false;
	}
	
	return true;
}

function CheckOffer(){
	var startDate = $('StartDate');
	var endDate = $('EndDate');
	var offerID = $('ID');
	//var homeImage = $('HomeImage').value.toUpperCase();
	//var sideImage = $('SideImage').value.toUpperCase();
	//var image = $('Image').value.toUpperCase();
	var pdf = $('PDF').value.toUpperCase();
	var fieldCheck = CheckFields('Title|StartDate|EndDate|ShortDescription|SalePrice');
	
	if(fieldCheck){
		//check to make sure its releated to a product
		/*
		if(!$('Product').value){
			alert("Please select a related product");
			return false;
		}
		*/
		
		if(!offerID.value){
			tempStartDate = startDate.value.split("/");
			tempEndDate = endDate.value.split("/");
		
			var offerStartDate = new Date();
			offerStartDate.setFullYear(tempStartDate[2],tempStartDate[1]-1,tempStartDate[0]);
			
			var offerEndDate = new Date();
			offerEndDate.setFullYear(tempEndDate[2],tempEndDate[1]-1,tempEndDate[0]);
			
			var currentDate = new Date();
			
			if(offerStartDate<currentDate){
				alert("Your start date must be after today");
				return false;
			}else if(offerEndDate<offerStartDate){
				alert("Your end date must be after the start date");
				return false;
			}else{
				if(pdf && pdf.indexOf(".PDF") == -1){
					alert("PDF must be in PDF format");
					return false;
				}
				return true;	
			}
		}else{
			return true;
		}
		
	}else{
		
		return false;	
	}
}

function CheckLoyalty(){
	var fieldCheck = CheckFields('FirstName|LastName|Address|Suburb|State|Postcode|Email|Phone');	
	var agree = $('Terms');
	if(fieldCheck){
		if(!agree.checked){
			alert("You must agree to our Terms & Conditions before proceeding");
			return false;
		}else{
			return true;	
		}
	}else{
		return false;	
	}
}

function CheckSignup(){
	var firstName = $('NewsFirstName');	
	var lastName = $('NewsSurname');	
	var email = $('NewsEmail');
	
	if(!firstName.value || !lastName.value || !email.value){
		alert("Please fill in all fields");
		return false;
	}else{
		if(!CheckEmail('NewsEmail')){
			return false;	
		}else{
			return true;	
		}
	}
}

function limitCharacters(field,maxLength){
	if (field.value.length > maxLength){ // if too long...trim it!
		field.value = field.value.substring(0, maxLength);
	}
}

function CheckHomepageImage(){
	var title = $('Title');
	var image = $('HomeImage');
	var url = $('URL');
	var id = $('ID');
	
	if(title.value && image.value){
		if(!id.value){
			if(image.value.toUpperCase().indexOf(".JPG") == -1 && image.value.toUpperCase().indexOf(".GIF") == -1){
				alert("Your image must be a JPG or GIF");
				return false;
			}else{
				return true;	
			}
		}else{
			return true;	
		}
	}else{
		if(!id.value){
			alert("Please enter a title and select an image");
			return false;
		}else{
			return true;	
		}
	}
}