//	Package Info :		CW-WEB	/	v2.0/07
//	File ID / Version :		orderForm.php	/	v1
//	Class :			form checking
//	Last Modified :		2007/05/14 12:22:00
//	Author : 			Polomé Pierre	/	ppolome@clearwire.com || polome.pierre@gmail.com
//	Copyright :			Clearwire European IT Service Center

// For verification functions
// See other script in this folder
// See alos http://www.prototypejs.org

// Accept new entry if it's a number only
var formKeyList = new Array(8, 9, 37, 38, 39, 40, 16, 13);
function formIsNumeric(field_id, e){
	pressedKey = (e && e.which) ? e.which : e.keyCode;
	if(!inArray(formKeyList, pressedKey)) return !isNaN(parseInt(String.fromCharCode(pressedKey)));
}



/***************************************************/
//
// Removes leading whitespaces

function LTrim( value ) {
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
}


/***************************************************/
//
// Removes ending whitespaces

function RTrim( value ) {
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
}


/***************************************************/
//
// Removes leading and ending whitespacesfunction trim( value ) 

function trim( value ) {
	return LTrim(RTrim(value));
}


/***************************************************/
//
// Check if it's empty or not

function is_not_empty(field, fieldLength){
	if((trim($(field).value)!="") && ($(field).value.length >= fieldLength)) return true
	else return false;
}
 
/***************************************************/
//
// Field content is a well formed e-mail addresse

function is_a_mail(field, fieldLength)	{
	//var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	str = $(field).value;
	exp = new RegExp("[A-Za-z0-9\.\-_]+@[A-Za-z0-9\.\-_]","g");
	if(exp.test(str)) {
	// le champ n'est pas vide et est un mail
	return true
	} else {
	// le champ est vide ou n'est pas un mail
	return false;
	}
}


/***************************************************/
//
// Field content is a number

function is_a_number(field, fieldLength){
	thisValue = $(field).value;
	//alert(field + ' - nain definit ou vide - ' + thisValue);

	if(($(field).value == '') || ($(field).value == undefined) || ($(field).value == 'undefined') || ($(field).value == 'Null')) thisValue = 'error';
	else thisValue = $(field).value;

	
	//alert(field + ' - nain definit ou vide - ' + thisValue);
	
	if(!isNaN($(field).value)){
		//alert('non numeric');
		return false;
	}
	else{
		if(thisValue.length >= fieldLength){
			//alert('numeric et bonne taille');
			return true;
		}
		else{
			//alert(thisValue + ' numeric mais mauvaise taille ' + thisValue.length);
			return false;
		}
	}
	
	/*
	thisNumber = trim($(field).value);
	if(($(field).value == Null) || ($(field).value == undefined) || ($(field).value == '')){
		thisNumber = 'r';
		return false;
	}
	
	if(isNaN(thisNumber)) return false;
	if(thisNumber.length < fieldLength) return false;
	
	return true;
	
	
	// ----------------------------------------
	
	
	
	if(((isNaN($(field).value))
	|| (trim($(field).value)==""))
	&& ($(field).value.length < fieldLength)) return false;
	else return true;
	*/
}


/***************************************************/
//
// check if it's an english mobil phone

function is_english_mobile (field, fieldLength){
	var prefix1 = $(field).value.charAt(0);
	var prefix2 = $(field).value.charAt(1);
	var number4 = $(field).value.charAt(3);
	
    if($(field).value.length != 10)
		return false;
 	else if(((prefix1 != "0") || (prefix2 != "8") || (number4 == "5")))
		return false;
	else
		return true;
}


/***************************************************/
//
// check if it's an english mobil phone
// Ask
//	field1 (month start 1 to 12)
//	field2 (year on 2 digit (XX))
//
// Return true or false

function is_future_date(field1, field2)	{
	today = new Date();
	//alert(new Date().getYear());
	
	month = parseInt($(field1).value) - 1;
	year = parseInt($(field2).value);
	//alert('month: ' + month + '\nthismonth: ' + today.getMonth() + '\nyear: ' + year + '\nthisyear: ' + today.getYear());
	
	if(month >= today.getMonth()) return true
	else if (year > today.getYear()) return true
	else return false
}


/***************************************************/
//
// Add a new child in a liste
// Ask
//	target (parent element)
//	nbrChild (position element in liste)
//	errorMsg (error message)
//
// Return
//	nbrChild + 1 (to add error msg to the corecte li[inbrChild])

function newLi(errorTarget, nbrChild, errorMsg){
	//alert('errorTarget: ' + errorTarget + '\nnbrChild: ' + nbrChild + '\nerrorMsg: ' + errorMsg);
	var newLi = document.createElement("li");
	var position = nbrChild;
	var newtextli = document.createTextNode(errorMsg);
	$(errorTarget).appendChild(newLi);
	$(errorTarget).getElementsByTagName("li")[position].appendChild(newtextli);
	nbrChild++;
	return nbrChild;
}

/***************************************************/
//
// Check some form
// Ask
//	sourceArray (an array whit type of field in case 3 and id of field in case 0)
//	errorTarget (target id for error msg)
// 	This function need a script in the page
//
// Return statute, an  array with true or false in case
//	

function usualCheckForm(sourceArray){
	var statute  = new Array();
	for(i=0; i<sourceArray.length; i++){
		if(sourceArray[i][2] == "mail"){
			statute [i] = is_a_mail(sourceArray[i][0], sourceArray[i][3]);
		}
		else if(sourceArray[i][2] == "number"){
			statute [i] = is_a_number(sourceArray[i][0], sourceArray[i][3]);															   
		}
		else if(sourceArray[i][2] == "english_mobile")
			statute [i] = is_english_mobile(sourceArray[i][0], sourceArray[i][3]);															   
		else{
			statute [i] = is_not_empty(sourceArray[i][0], sourceArray[i][3]);
		}
	}
	
	return statute ;

}

/***************************************************/
//
// Check the form
// Ask
//	form (form name)
//	errorTarget (target id for error msg)
// 	This function need a script in the page

//		<script type="text/javascript">;
//			var field_name = new Array('name', 'field is empty', 'text')
//			var field_mail = new Array('mail', 'It\'s not a correct e-mail addresse', 'mail')
//			var field_compte = new Array('compteNumber', 'Not A Number', 'number')
//
//			var fieldList = new Array(field_name, field_mail, field_compte);
//		</script>

//	var champ_name is an exemple of letter field, field_mail is mail, compte is a number field
//	fieldList is an array with all of form fiel need to be checked
//	If you don't want to check a field, don't add it to the fieldList


function checkOrderForm(form, errorTarget){
	// Initialisation
	var nbrChild = 0;
	var verification = true;
	
	// Hide error liste (in validation again case)
	//document_id(cible).style.display = "none";
	$(errorTarget).hide();
	
	// empty liste of error
	$(errorTarget).innerHTML = "";

	// First form part
	var obligatoryList = usualCheckForm(fieldList);
	
	for(i=0; i<obligatoryList.length; i++){
		if(!obligatoryList[i]){
			nbrChild = newLi(errorTarget, nbrChild, fieldList[i][1]);
			verification = false;
			$(fieldList[i][0]).addClassName('fieldFormError')
		}
		else if($(fieldList[i][0]).hasClassName('fieldFormError')) $(fieldList[i][0]).removeClassName("fieldFormError");
	}
	
	// Second form part (optionel part)
	if($('CONTACT_ME').checked == true){
		var optionalList = usualCheckForm(fieldListOpt);
		
		for(i=0; i<optionalList.length; i++){
			if(!optionalList[i]){
				nbrChild = newLi(errorTarget, nbrChild, fieldListOpt[i][1]);
				verification = false;
				$(fieldListOpt[i][0]).addClassName('fieldFormError')
			}
			else if($(fieldListOpt[i][0]).hasClassName('fieldFormError')) $(fieldListOpt[i][0]).removeClassName("fieldFormError");
		}
	}

	//*/
	if(verification == false) $(errorTarget).show();
	else form.submit();
	//*/form.submit();
	
	
}


/***************************************************/
//
// Check the order form
// Ask
//	form (form name)
//	errorTarget (target id for error msg)
// 	This function need a script in the page

//*/
function checkOrderFormRealex(form, errorTarget)	{
	// Initialisation
	var nbrChild = 0;
	var verification = true;
	
	// Hide error liste (in validation again case)
	$(errorTarget).hide();
	
	// empty liste of error
	$(errorTarget).innerHTML = "";

	// Card name
	if(!is_not_empty('FORM_CARD_NAME', 2)){
		nbrChild = newLi(errorTarget, nbrChild, fname_error);
		verification = false;
		$('FORM_CARD_NAME').addClassName('fieldFormError');
	}
	else if($('FORM_CARD_NAME').hasClassName('fieldFormError')) $('FORM_CARD_NAME').removeClassName("fieldFormError");
	
	// Date
	if(is_future_date('FORM_EXP_DATE_M', 'FORM_EXP_DATE_Y')){
			if($('FORM_EXP_DATE_M').hasClassName('fieldFormError')) $('FORM_EXP_DATE_M').removeClassName("fieldFormError");
			if($('FORM_EXP_DATE_Y').hasClassName('fieldFormError')) $('FORM_EXP_DATE_Y').removeClassName("fieldFormError");
	}
	else{
		nbrChild = newLi(errorTarget, nbrChild, date_error);
		verification = false;
		$('FORM_EXP_DATE_M').addClassName('fieldFormError');
		$('FORM_EXP_DATE_Y').addClassName('fieldFormError');
	}

	// if payment methode is 1 (in our case, credit card)
	if(payement_methode == 1){
		// Card number
		var thisError=false;
		for(i=1; i<5; i++){
			if(!is_a_number('FORM_CARD_NUMBER' + i,4)){
				$('FORM_CARD_NUMBER' + i).addClassName('fieldFormError');
				thisError=true;
			}
			else if($('FORM_CARD_NUMBER' + i).hasClassName('fieldFormError')) $('FORM_CARD_NUMBER' + i).removeClassName("fieldFormError");
		}
		
		if(thisError == true){
			nbrChild = newLi(errorTarget, nbrChild, cnumber_error);
			verification = false;
		}
		
		// Secure Card Code
		if(!is_a_number('FORM_CARD_SECURE', 3)){
			nbrChild = newLi(errorTarget, nbrChild, cardsecure_error);
			verification = false;
			$('FORM_CARD_SECURE').addClassName('fieldFormError');
		}
		else if($('FORM_CARD_SECURE').hasClassName('fieldFormError')) $('FORM_CARD_SECURE').removeClassName("fieldFormError");
	}
	
	// else if 2 (bank account)
	else if(payement_methode == 2){
		// Account
		if(!is_a_number('FORM_ACCOUNT_NUMBER', 10)){
			nbrChild = newLi(errorTarget, nbrChild, bank_error);
			verification = false;
			$('FORM_ACCOUNT_NUMBER').addClassName('fieldFormError');
		}
		else if($('FORM_ACCOUNT_NUMBER').hasClassName('fieldFormError')) $('FORM_ACCOUNT_NUMBER').removeClassName("fieldFormError");
		
		// Sort code
		if(!is_a_number('FORM_SORT_CODE', 6)){
			nbrChild = newLi(errorTarget, nbrChild, sortcode_error);
			verification = false;
			$('FORM_SORT_CODE').addClassName('fieldFormError');
		}
		else if($('FORM_SORT_CODE').hasClassName('fieldFormError')) $('FORM_SORT_CODE').removeClassName("fieldFormError");
	}
	
	if(verification == false) $(errorTarget).show();
	else form.submit();	
}
//*/


// ORDER PROCESS

var error = false;
var error_message = "";

function check_input(fieldId, fieldLength) {
	if ($(fieldId) && ($(fieldId).type != "hidden") && (fieldLength != ""))	return is_not_empty(fieldId, fieldLength);
}


function isNumberLength(fieldId, fieldLength){
	insideError = false;
	if(isNaN($(fieldId).value)){
		//alert(fieldId+": "+$(fieldId).value + "NaN");
		insideError = true;
	}
	if((fieldLength != "") &&($(fieldId).value.length != fieldLength)){
		insideError = true;
	}
	if(insideError == false)
		return true;
	else
		return false;
}


function check_radio(field_name) {
	var isChecked = false;

	if ($(field_name) && ($(field_name).type != "hidden")) {
		for (i=0; i< document.getElementsByName(field_name).length; i++) {
			
			if (document.getElementsByName(field_name)[i].checked == true) {
				isChecked = true;
				break;
			}
		}
	return isChecked;
	}
}

function check_select(field_name, field_default) {
	if ($(field_name) && ($(field_name).type != "hidden")) {
		var field_value = $(field_name).value;

		if (field_value == field_default)	return false;
		else	return true;
	}
}