var foundErrors=new Array();

function grabElement(objectname) {

	if (document.getElementById)
	{
		// this is the way the standards work
		return document.getElementById(objectname);	
	}
	else if (document.all)
	{
		// this is the way old msie versions work
		return document.all[objectname];
	}
	else if (document.layers)
	{
		// this is the way nn4 works
		return document.layers[objectname];
	}	
}

function switchSubmitters(state)
{
	if (!state) {
		submitter = null;
	}
	for (i=0; i<document.forms.length; i++)	{
		var form = document.forms[i];
		for (j=0; j<form.elements.length; j++) {
			if (form.elements[j].nodeType == 1) {
				if (form.elements[j].id.length > 6 && form.elements[j].id.substring(6,0) == '__cws_') {
					form.elements[j].disabled=state;
				}
			}
		}
	}
}

function doReload(caller, form)
{
	grabElement('frmAction').value = 'reload:'+caller.id;
	document.forms[form].submit();
}

function submitForm(myAction, formname, caller) {
	if (myAction.substring(6,0) == 'reload') {
		grabElement('frmAction').value = myAction+':'+caller.id;
		document.forms[formname].submit();
	} else {
		grabElement('frmAction').value = myAction;
		if (myAction != 'prev') {
			if (ValidateForm(formname, myAction)) {
				document.forms[formname].submit();
			} else {
				caller.disabled=false;
			}
		} else {
			document.forms[formname].submit();
		}
	}
}

//** Validation function library **
//Validate existence
function isEmpty(objectname, errorMessage) {
	var fieldToCheck = grabElement(objectname);
    if (fieldToCheck != null) {
	    if (fieldToCheck.type == 'radio' || fieldToCheck.type == "checkbox") {
            var status = false;
            for (i=0;i<fieldToCheck.form.elements.length;i++) {
                var itemobj = fieldToCheck.form.elements[i];
                if (itemobj.id == objectname && itemobj.checked) {
                    status = true;
                }
            }
            if (status == false) {
                foundErrors.push(errorMessage);
                return false;
            }
        } else {
            if (fieldToCheck.value == "" ) {
    	        foundErrors.push(errorMessage);
                return false;
            }
        }
    }
	return true;
}

function isEqual(firstobj, secondobj, errorMessage) {
	var fieldToCheck1 = grabElement(firstobj);
	var fieldToCheck2 = grabElement(secondobj);
	if (fieldToCheck1.value != fieldToCheck2.value ) {
    	foundErrors.push(errorMessage);
		return false;
    }
	return true;
}

function isSelected(objectname, errorMessage)
{
	var obj = grabElement(objectname);
	if (obj.checked)
		return true;
    foundErrors.push(errorMessage);
	return false;
}

//Validate email adres
function isEmail(objectname, errorMessage) {
	var x = grabElement(objectname).value;
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(x)) {
		//nice email do nothing
	}else{
	  foundErrors.push(errorMessage);
	  return false;
	}
	return true;
}

function isMinValue(objectname, minvalue, errorMessage) {
	var fieldToCheck = grabElement(objectname);
	if (fieldToCheck.value == "" ) { }
    else if(IsNumeric(fieldToCheck.value) == false) {
    	foundErrors.push(errorMessage);
		return false;
    }else if(fieldToCheck.value < minvalue) {
    	foundErrors.push(errorMessage);
		return false;
    }
	return true;
}

function isMaxValue(objectname, maxvalue, errorMessage) {
	var fieldToCheck = grabElement(objectname);
	if (fieldToCheck.value == "" ) { }
    else if(IsNumeric(fieldToCheck.value) == false) {
    	foundErrors.push(errorMessage);
		return false;
    }else if(fieldToCheck.value > maxvalue) {
    	foundErrors.push(errorMessage);
		return false;
    }
	return true;
}

function isModulo97s(objectname, errorMessage)
{
	var num1 = grabElement(objectname+"1").value;
	var num2 = grabElement(objectname+"2").value;
	var num3 = grabElement(objectname+"3").value;
	if(num1 != "" && num2 != "" && num3 != "") {
		if (num1 + num2 + num3 == 0) {
			foundErrors.push(errorMessage);
			return false;
		} else if((num1 + num2) % 97 != num3) {
			foundErrors.push(errorMessage);
			return false;
		}
	} else {
		foundErrors.push(errorMessage);
		return false;
	}
	return true;
}

//private function
function IsFloat(strString)
{
	var strValidChars = "0123456789.-";
	var strChar;
	var blnResult = true;
	if (strString.length == 0) return false;
	for (i = 0; i < strString.length && blnResult == true; i++) {
		strChar = strString.charAt(i);
		if (strValidChars.indexOf(strChar) == -1) {
			blnResult = false;
		}
	}
	return blnResult;
}
 
//************************************************************************************************************************
// Force on type function library
//************************************************************************************************************************
function numOnly(e)
{
	var k = e.keyCode ? e.keyCode :	e.charCode ? e.charCode : e.which;
	if(k==8 || k==46 || (k>34 && k<41))
		return true;
	return /^(\d)$/.test(String.fromCharCode(k));
}

function autoMask(field, event, sMask) {
	var KeyTyped = String.fromCharCode(getKeyCode(event));
	var targ = getTarget(event);
	keyCount = targ.value.length;

	if(keyCount == sMask.length)
	{
		return false;
	}
	if ((sMask.charAt(keyCount+1) != '#') && (sMask.charAt(keyCount+1) != 'A' ) )
	{
		field.value = field.value + KeyTyped + sMask.charAt(keyCount+1);
		return false;
	}
	if (sMask.charAt(keyCount) == '*')
		return true;
	if (sMask.charAt(keyCount) == KeyTyped)
	{
		return true;
	}
	if ((sMask.charAt(keyCount) == '#') && isNumeric(KeyTyped))
		return true;
	if ((sMask.charAt(keyCount) == 'A') && isAlpha(KeyTyped))
		return true;
	if ((sMask.charAt(keyCount+1) == '?') )
	{
		field.value = field.value + KeyTyped + sMask.charAt(keyCount+1);
		return true;
	}
	if (KeyTyped.charCodeAt(0) < 32) return true;
		return false;
}

function getTarget(e) {
	// IE5
	if (e.srcElement) {
		return e.srcElement;
	}
	if (e.target) {
		return e.target;
	}
}

function getKeyCode(e) {
	//IE5
	if (e.srcElement) {
		return e.keyCode
	}
	// NC5
	if (e.target) {
		return e.which
	}
}

function isNumeric(c)
{
	var sNumbers = "01234567890";
	if (sNumbers.indexOf(c) == -1)
		return false;
	else return true;
}

function isAlpha(c)
{
	var lCode = c.charCodeAt(0);
	if (lCode >= 65 && lCode <= 122 )
	{
		return true;
	}
	else
		return false;
}

function isPunct(c)
{
	var lCode = c.charCodeAt(0);
	if (lCode >= 32 && lCode <= 47 )
	{
		return true;
	}
	else
		return false;
}
