// general.js

//=========================================================================
function LCase(Value) {
  return Value.toString().toLowerCase();
}
function trim(s){
if(s) return s.replace(/^\s+|\s+$/g,''); else return s;
}
//=========================================================================
function parse_date_input(inputvalue){
	dash = "-";
	temp = inputvalue.value.toString();
	out = ".";
	while (temp.indexOf(out)>-1) {
		pos= temp.indexOf(out);
		temp = "" + (temp.substring(0, pos) + dash + temp.substring((pos + out.length), temp.length));
	}
	out = "/";
	while (temp.indexOf(out)>-1) {
		pos= temp.indexOf(out);
		temp = "" + (temp.substring(0, pos) + dash + temp.substring((pos + out.length), temp.length));
	}
	inputvalue.value = temp;
}
//=========================================================================
var errorMessage = "";
var submitcount = 0 ;
var datePattern = /^(\d{1,2})(\-)(\d{1,2})(\-)(\d{4})$/;
var _BIRTH = 1;

function textCounter(field, maxlimit) {
if (field.value.length > maxlimit)
	field.value = field.value.substring(0, maxlimit);
}
function numericDigitCounter(field) {
	var valChars = "1234567890";
	var length=0;
	for(var i=0; i < field.value.length; i++) {
		if(valChars.indexOf(field.value.charAt(i)) >= 0) {
			//if (length > 0 || field.value.charAt(i) != 0) 
			length++;
		}
	}
	return length;
}
function formcheck_Alphanumeric(formname, elementname, elementdescription) {
	var illegalFound = false;
	//var iChars = " *|,\":<>[]{}`\';\\()@?.!^_=+~&$#%-/";
	var valChars = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	for (var i = 0; i < eval("document."+formname+"."+elementname+".value").length; i++) {
		if (valChars.indexOf(eval("document."+formname+"."+elementname+".value").charAt(i)) < 0)
	       illegalFound = true;
	}
	if(illegalFound) 
		errorMessage = errorMessage + '\n   *  '+genErrors["alph_illeg1"]+' \''+elementdescription+'\' '+genErrors["alph_illeg2"];
}
function formcheck_AccountNumber(formname, elementname, elementdescription) {
	var length = numericDigitCounter(eval("document."+formname+"."+elementname));
	if (length > 10) formcheck_BeAccountNumber(formname, elementname, elementdescription);
	else if (length > 8) formcheck_Elfproef(formname, elementname, elementdescription);
	else if (length > 3 && length < 8) {
		// GIRO account
	}
	else errorMessage = errorMessage + '\n   *  '+genErrors["accn_valid1"]+' \''+elementdescription+'\' '+genErrors["accn_valid1"];
}
function formcheck_BeAccountNumber(formname, elementname, elementdescription) {
	var obj = eval("document."+formname+"."+elementname);
	if (obj) {
		var accountNumber = obj.value;
		var accountPattern = /^[0-9]{3}[./-]?[0-9]{7}[./-]?[0-9]{2}$/;
		var matchArray = accountNumber.match(accountPattern);
		if(matchArray == null){
			errorMessage = errorMessage + '\n   *  '+genErrors["accn_pttrn1"]+' \''+elementdescription+'\' '+genErrors["accn_pttrn2"];
		} else {
			accountNumber = accountNumber.replace(/[./-]/g,'');
			var prefix = accountNumber.substring(0,10);
			var checksum = accountNumber.substring(10);
			//alert('account:' + accountNumber + '  prefix:' + prefix + '  checksum:' + checksum)
			var trial = ((prefix % 97) == 0)?97:(prefix % 97);
			if (checksum != trial) {
				errorMessage = errorMessage + '\n   *  '+genErrors["bacn_valid1"]+' \''+elementdescription+'\' '+genErrors["bacn_valid2"];
			}
		}
	}
}
function formcheck_Elfproef(formname, elementname, elementdescription) {
	var accountNumber = eval("document."+formname+"."+elementname+".value");
	thisLength = accountNumber.length;
	accountNumber=accountNumber.replace(/\D/g, "");
	var tokenSize=accountNumber.length;
	var sum=0;
	for (var i=0; i < tokenSize && i < 10; i++) {
		var token=accountNumber.charAt(tokenSize-i-1);
		sum+=token*(i+1);
	} 
	if (!(sum % 11==0 && (tokenSize==9 || tokenSize==10))) {
		errorMessage = errorMessage + '\n   *  '+genErrors["elfpr_fail1"]+' \''+elementdescription+'\' '+genErrors["elfpr_fail2"];
	}
}
function formcheck_Postalcode(formname, elementname, elementname2, elementdescription){
	var illegalFound = false;
	var valDigits = "1234567890";
	var valChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var valAlpha = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
	thisLength = eval("document."+formname+"."+elementname+".value").length;
	var country = eval("document."+formname+"."+elementname2+".value");
	var postcode = eval("document."+formname+"."+elementname+".value");
	if((country=='BE' && thisLength==4) || (country=='NL' && thisLength==6) || (country!='BE' && country!='NL' && thisLength>0 && thisLength<=7)){
		for (var i = 0; i < thisLength; i++) {
			if (country=='BE' && valDigits.indexOf(postcode.charAt(i)) == -1) {
				illegalFound = true;
			} else if (country=='NL' && ((i<4 && valDigits.indexOf(postcode.charAt(i)) == -1) || ((i==4 || i==5) && valChars.indexOf(postcode.charAt(i)) == -1)) ) {
				illegalFound = true;
			} else if (country!='BE' && country!='NL' && valAlpha.indexOf(postcode.charAt(i)) == -1) {
				illegalFound = true;
			}
		}
		if(illegalFound){
			errorMessage = errorMessage + '\n   *  '+genErrors["post_illeg1"]+' \''+elementdescription+'\' '+genErrors["post_illeg2"];
		}
	}else{
		if (country=='BE') {
			errorMessage = errorMessage + '\n   *  '+genErrors["post_lengt1"]+' \''+elementdescription+'\' '+genErrors["post_lengt2"];
		} else if (country=='NL') {
			errorMessage = errorMessage + '\n   *  '+genErrors["post_lengt1_nl"]+' \''+elementdescription+'\' '+genErrors["post_lengt2_nl"];
		} else {
			errorMessage = errorMessage + '\n   *  '+genErrors["post_lengt1_oth"]+' \''+elementdescription+'\' '+genErrors["post_lengt2_oth"];
		}
	}
}
function formcheck_Pincode(formname, elementname1, elementname2, elementdescription){

	thisLength = eval("document."+formname+"."+elementname1+".value").length;
	var illegalFound = false;
	var iChars = "1234567890";
	for (var i = 0; i < thisLength; i++) {
		if (iChars.indexOf(eval("document."+formname+"."+elementname1+".value").charAt(i)) == -1)
	       illegalFound = true;
	}
	if(illegalFound){
		errorMessage = errorMessage + '\n   *  '+genErrors["pinc_illeg1"]+' \''+elementdescription+'\' '+genErrors["pinc_illeg2"];
	}else{
		if(thisLength!=4){
			errorMessage = errorMessage + '\n   *  '+genErrors["pinc_lengt1"]+' \''+elementdescription+'\' '+genErrors["pinc_lengt2"];
		}
	}
	var pin1 = eval("document."+formname+"."+elementname1+".value");
	var pin2 = eval("document."+formname+"."+elementname2+".value");
	if(pin1 != pin2) {
		errorMessage = errorMessage + '\n   *  '+genErrors["pinc_differ"];
	}
}
function formcheck_Hour(formname, elementname, elementdescription) {
	var thisVal = eval("document."+formname+"."+elementname+".value");
	var re = /^[0-2]?[0-9]$/;
	if ( thisVal!="" ) {
		if (!(thisVal.match(re) && parseInt(eval(thisVal)) >= 0 && parseInt(eval(thisVal)) <= 23)) {
			errorMessage = errorMessage + '\n   *  '+genErrors["hour_invld1"]+' \''+elementdescription+'\' '+genErrors["hour_invld2"];
		}
	}
}
function formcheck_Minute(formname, elementname, elementdescription) {
	var thisVal = eval("document."+formname+"."+elementname+".value");
	var re = /^[0-5]?[0-9]$/;
	if ( thisVal!="" ) {
		if (!(thisVal.match(re) && parseInt(eval(thisVal)) >= 0 && parseInt(eval(thisVal)) <= 59)) {
			errorMessage = errorMessage + '\n   *  '+genErrors["min_invld1"]+' \''+elementdescription+'\' '+genErrors["min_invld2"];
		}
	}
}
function formcheck_NotEmpty(formname, elementname, elementdescription) {
	if ( eval("document."+formname+"."+elementname+".value")=="" ) {
		errorMessage = errorMessage + '\n   *  '+genErrors["elmt_empty1"]+' \''+elementdescription+'\' '+genErrors["elmt_empty2"];
	}
}
function formcheck_NotEmptyById(elementname, elementdescription) {
	if ( document.getElementById(elementname).value == "" ) {
		errorMessage = errorMessage + '\n   *  '+genErrors["elmt_empty1"]+' \''+elementdescription+'\' '+genErrors["elmt_empty2"];
	}
}
function formcheck_CheckRadio(elementname, elementdescription) {
	var checkedValue = getCheckedValue(document.getElementsByName(elementname));
	if ( checkedValue == "" ) {
		errorMessage = errorMessage + '\n   *  '+genErrors["radi_empty1"]+' \''+elementdescription+'\' '+genErrors["radi_empty2"];
	}
}
function formcheck_CheckLength(formname, elementname, elementdescription, requiredlength) {
	var obj = document.getElementById(elementname);
	if (!obj) obj = eval("document."+formname+"."+elementname);
	if (obj && obj.value && obj.value.length < requiredlength ) {
		errorMessage = errorMessage + '\n   *  '+genErrors["elmt_lengt1"]+' \''+elementdescription+'\' '+genErrors["elmt_lengt2"]+requiredlength+genErrors["elmt_lengt3"];
	}
}
function formcheck_CheckLengthMax(formname, elementname, elementdescription, requiredlength) {
	var obj = document.getElementById(elementname);
	if (!obj) obj = eval("document."+formname+"."+elementname);
	if (obj && obj.value && obj.value.length > requiredlength ) {
		errorMessage = errorMessage + '\n   *  '+genErrors["elmt_lgmax1"]+' \''+elementdescription+'\' '+genErrors["elmt_lgmax2"]+requiredlength+genErrors["elmt_lgmax3"];
	}
}
function formcheck_StringCompare(formname, element1name, element1description, element2name, element2description) {
	if ( eval("document."+formname+"."+element1name+".value") !== eval("document."+formname+"."+element2name+".value") ) {
		errorMessage = errorMessage + '\n   *  '+genErrors["strg_diffr1"]+' \''+element1description+'\' '+genErrors["strg_diffr2"]+element2description+genErrors["strg_diffr3"];
	}
}
function formcheck_EmailChecker(formname, elementname) {
	//var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	var filter=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/i;
	obj = eval("document."+formname+"."+elementname);
	obj.value = trim(obj.value);
	if (!filter.test(obj.value)) {
		errorMessage = errorMessage + '\n   *  \''+obj.value+'\' '+genErrors["email_check"];
	}
}
function formcheck_DateChecker(elementname, elementdescription, isBirth) {
	if(document.getElementById(elementname).value=="") {
		errorMessage = errorMessage + '\n   *  '+genErrors["date_empty1"]+' \''+elementdescription+'\' '+genErrors["date_empty2"];
	} else {
		a = document.getElementById(elementname).value;
		var matchArray = a.match(datePattern);
		if(matchArray == null){
			errorMessage = errorMessage + '\n   *  '+genErrors["date_pttrn1"]+' \''+elementdescription+'\' '+genErrors["date_pttrn2"];
		}else {
			var day = parseInt(eval(matchArray[1]));
			var month = parseInt(eval(matchArray[3]));
			var year = parseInt(eval(matchArray[5]));			
			var date = new Date(year,month-1,day);
			
			var begin = new Date(1900,0,01);
			var today = new Date();
			var end = new Date(2100,0,01);
			var maxDay = (month==4||month==6||month==9||month==11)?31:32;
			maxDay = (month==2)?(((year%4==0&&year%100!=0)||year%400==0)?30:29):maxDay;
			if(date > begin && date < end && day > 0 && day < maxDay && month > 0 && month < 13 && year > 1899 && year < 2100 ){
				if(isBirth == _BIRTH && date > today){
					errorMessage = errorMessage + '\n   *  '+genErrors["date_btody1"]+' \''+elementdescription+'\' '+genErrors["date_btody2"];
				}
			} else {
				errorMessage = errorMessage + '\n   *  '+genErrors["date_fault1"]+' \''+elementdescription+'\' '+genErrors["date_fault2"];
			}
		}
	}
}
function formcheck_ConditionChecker(formname, elementname) {
	if (eval("document."+formname+"."+elementname+".checked")) {
		eval("document."+formname+".next.value='true'");
	} else {
		errorMessage = errorMessage + '\n   *  '+genErrors["condn_fault"];
	}
}
function formcheck_addError(errorMsg) {
	errorMessage = errorMessage + '\n   *  ' + errorMsg;
}
function formcheck_complete_wloader(formname) {
	if (errorMessage == "") {
		if(submitOnce(formname)){
			submitForm(eval("document."+formname));
		}
	} else {
		showAlertBox(genErrors["form_failur"]+errorMessage);
		errorMessage = "";
		return false;
	}
}
function formcheck_complete(formname) {
	if (errorMessage == "") {
		if(submitOnce(formname)){
			eval("document."+formname+".submit()");
		}
	} else {
		showAlertBox(genErrors["form_failur"]+errorMessage);
		errorMessage = "";
		return false;
	}
}
function submitOnce(formname) {                     
	if (submitcount == 0) {
		submitcount++;
		return true;
	} else {
		showAlertBox(genErrors["sbmt_failur"]);
		submitcount--;
		return false;
    }
}
//=========================================================================
function getCheckedValue(radioObj) {
	if (!radioObj) {
		return "";
	}
	var radioLength = radioObj.length;
	if (radioLength == undefined) {
		if(radioObj.checked) {
			return radioObj.value;
		} else {
			return "";
		}
	}
	for (var i=0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}
//=========================================================================
function currencyFormat(amount) {
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	s = s.replace(/\./, ',');
	return s;
}
//=========================================================================
var loaderText1="";
var loaderText2="";
function showLoader() {
	document.getElementById('loaderHaze').style.height = '4000px';
	document.body.style.overflow='hidden';
	document.body.scroll='no';
	document.getElementById('loaderBlock_part1').innerHTML=loaderText1;
	document.getElementById('loaderBlock_part2').innerHTML=loaderText2;	
	var loaderDiv = document.getElementById('loaderBlock');
	browserVars.updateVars();
	var lTop = new String(loaderDiv.style.top);
	var x = parseInt(lTop.replace("px","")) + browserVars.scrollTop;
	loaderDiv.style.top = x+"px";
	document.getElementById('pleaseWaitDiv').style.display = 'block';
	moveLoaderBar();
}
function submitForm(targetForm) {
	showLoader();
	setTimeout("document."+targetForm.name+".submit();",100);
}
function showAlertBox(messages) {
	if (messages) {
		document.getElementById('alertMessages').innerHTML = messages.replace(/\n/g, "<br />");
		jQuery.blockUI.defaults.css = {};
		jQuery.blockUI.defaults.overlayCSS = {opacity: 0.6, cursor: 'wait'};
		jQuery.blockUI({ message: jQuery('#alertbox') });
	}
}
//=========================================================================
var loaderBarDirection = 0;
function moveLoaderBar(){
	var leftPos = new String(document.getElementById('loaderBarImage').style.left);
	leftPos.replace("px","");
	leftPos = parseInt(leftPos);
	if(loaderBarDirection==0){
		leftPos = leftPos + 10;
		if(leftPos>310) loaderBarDirection = 1;
	}else{
		leftPos = leftPos - 10;
		if(leftPos==0) loaderBarDirection = 0;
	}
	document.getElementById('loaderBarImage').style.left = leftPos+'px';
	setTimeout("moveLoaderBar()",50);
}	
//=========================================================================	
function displayHelp(obj){
	browserVars.updateVars();
	var x = browserVars.mouseX - 340;
	var y = browserVars.mouseY - 50;
	obj.style.top=y+"px";
	obj.style.left=x+"px";
	if(obj.style.display=="none"){
		obj.style.display="block";
	}else{
		obj.style.display="none";
	}
}
//=========================================================================
var downStrokeField;
function autojump(fieldName,nextFieldName,fakeMaxLength) {
	var myForm=document.forms[document.forms.length - 1];
	var myField=myForm.elements[fieldName];
	myField.nextField=myForm.elements[nextFieldName];
	
	if (myField.maxLength == null) {
	   myField.maxLength=fakeMaxLength;
	}
	
	myField.onkeydown=autojump_keyDown;
	myField.onkeyup=autojump_keyUp;
}

function autojump_keyDown() {
	this.beforeLength=this.value.length;
	downStrokeField=this;
}

function autojump_keyUp() {
	if ((this == downStrokeField) && (this.value.length > this.beforeLength) && (this.value.length >= this.maxLength)) {
	   this.nextField.focus();
	}
	downStrokeField=null;
}
function convertToAlpha(field) {
	var valid ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var invConvList = "áàâäåãÁÀÂÄÅÃçÇéèêëÈÉÊËíìîïÍÌÎÏñÑóòôöõøÓÒÔÖÕØ¨¦úùûüÚÙÛÜýÿÝ¾¸´";
	var valConvList = "aaaaaaAAAAAAcCeeeeEEEEiiiiIIIInNooooooOOOOOOsSuuuuUUUUyyYYzZ";
	var invCombList = "æÆ½¼ß";
	var valCombList = new Array("ae", "AE", "oe", "OE", "ss");
	var l_char;
	var l_temp ="";
	for (var i = 0; i<field.value.length; i++) {
	  l_char = field.value.charAt(i);     
	  if (valid.indexOf(l_char) != "-1") {
	    l_temp = l_temp + l_char;
	  } if (invConvList.indexOf(l_char) != "-1") {
	    l_temp = l_temp + valConvList.charAt(invConvList.indexOf(l_char));
	  } if (invCombList.indexOf(l_char) != "-1") {
	    l_temp = l_temp + valCombList[invCombList.indexOf(l_char)];
	  }
	}
	field.value = l_temp;
}
var frconvertion = new Array();
frconvertion[0] = new Array("à", "â", "é", "è", "ê", "ë", "ô", "î", "ï", "û", "ù", "ü", "ÿ", "ç", "œ");
frconvertion[1] = new Array("a", "a", "e", "e", "e", "e", "o", "i", "i", "u", "u", "u", "y", "c", "oe");
function compareText(op1, op2){
	if(op1.text == '') return -1;
	else if(op2.text == '') return 1;
	var text1 = op1.text;
	var text2 = op2.text;
	for(i=0; i<frconvertion[0].length; i++){
		text1=eval('text1.replace(/'+frconvertion[0][i]+'/gi, frconvertion[1][i])');
		text2=eval('text2.replace(/'+frconvertion[0][i]+'/gi, frconvertion[1][i])');
	}
	return text1 < text2 ? -1 : text1 > text2 ? 1 : 0;
}
function compareValue(op1, op2){
	if(op1.value == '') return -1;
	else if(op2.value == '') return 1;
	return op1.value < op2.value ? -1 : op1.value > op2.value ? 1 : 0;
}
function sortSelect (select, compareFunction, defaultSelect) {
  if (!compareFunction)
    compareFunction = compareText;
  var options = new Array (select.options.length);
  for (var i = 0; i < options.length; i++){
    options[i] = new Option (select.options[i].text,select.options[i].value);
  }
  options.sort(compareFunction);
  select.options.length = 0;
  for (var i = 0; i < options.length; i++){
    select.options[i] = options[i];
    if((defaultSelect || defaultSelect=='') && select.options[i].value == defaultSelect) select.options[i].selected=true;
  }
}
function setSelect(select, selectedValue){
	if (!select) return;
	for (var i = 0; i < select.options.length; i++){
		if(select.options[i].value == selectedValue) {
			if (browserVars && browserVars.type.ie) {
				select.options[i].setAttribute("selected", true);
			} else {
				select.options[i].selected=true;
			}
			break;
		}
	}
}
