<!--

// Client script functions for Form Module (SC_Module_Forms)
// English version (default).
// v01 beta
// 2007.10.15 /PA
//
// IsNumeric
// IsPositiveNumeric
// IsNumericExt
// IsEmail

function SC_ValidateFormItem(oForm, sElmName, sElmType, sDatatype){
	var oElement = oForm.elements[sElmName];
	
	switch (sElmType){
		// Text
		case "text":
			if(oElement.value == ""){
				return false;
			}
			else{
				switch(sDatatype){
					case "email":
						return IsEmail(oElement.value);
						
					case "numeric":
						return IsNumeric(oElement.value);

					case "numeric_ext":
						return IsNumericExt(oElement.value);
						
					case "numeric_pos":
						return IsPositiveNumeric(oElement.value);
						
					case "alphanumeric":
						return IsAlphanumeric(oElement.value);

					default:
						return true;
				}
			}
			break;
			
		// Textarea
		case "textarea":
			if(oElement.value == ""){
				return false;
			}
			break;
			
		// Select and radio fields
		case ("select"):
			if(oElement.options[oElement.selectedIndex].value == "disabled"){
				return false;
			}			
			break;
			
		// Radio
		case "radio":
			var bIsChecked = false;
			for(var i = 0; i < oElement.length; i++){
				if(oElement[i].checked == true){
					bIsChecked = true;
					break;
				}
			}
			if(!bIsChecked){
				return false;
			}
			break;
			
		// Checkbox
		case "checkbox":
			if(oElement.checked != true){
				return false;
			}
			break;
	}
	return true;
}



function IsNumeric(str){
	var valid = "0123456789"
	
    for (i = 0; i < str.length; i++) {
		if (valid.indexOf(str.charAt(i)) == -1) {
            return false;
        }
		else {
			passed = true;
		}
    }
	return passed;
}



// Remove leading and trailing whitespace off string
function TrimValue(str){
	return str.replace(/^\s+|\s+$/g, '');
}


// 1234567890 .-+/()%#=
function IsNumericExt(str){
	str = TrimValue(str);
	var valid = "1234567890 .-+/()%#=";

    for (i = 0; i < str.length; i++) {		
		if (valid.indexOf(str.charAt(i)) < 0) {
			alert(str.charAt(i) + ": false")
            return false;
        }
    }
	return true;
}





function IsPositiveNumeric(str){
	var valid = "0123456789"
	var passed = false;
	
    for (i = 0; i < str.length; i++) {
		if (valid.indexOf(str.charAt(i)) == -1) {
            passed = false;
        }
		else {
			passed = true;
		}
    }
	
	if(str >= 1){
		passed = true;
	}
	else{
		passed = false;
	}
	return passed;
}


function IsEmail(emailStr){
	var emailPat = /^(.+)@(.+)$/
	// disallow special chars: ( ) < > @ , ; : \ " . [ ]    */
	var specialChars = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars = "\[^\\s" + specialChars + "\]"
	var firstChars = validChars   
	var quotedUser = "(\"[^\"]*\")"
	var ipDomainPat = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom= "(" + firstChars + validChars + "*" + ")"
	var word= "(" + atom + "|" + quotedUser + ")"
	var userPat = new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat = new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray = emailStr.match(emailPat)
	
	if (matchArray == null) {
		//alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}
	var user = matchArray[1]
	var domain = matchArray[2]
	if (user.match(userPat) == null) {
	    //alert("The username doesn't seem to be valid.");
	    return false;
	}
	
	var IPArray = domain.match(ipDomainPat)
	if (IPArray != null) {
		for (var i = 1; i <= 4; i++) {
			if (IPArray[i] > 255) {
				//alert("Destination IP address is invalid!");
				return false;
			}
		}
		return true;
	}

	var domainArray = domain.match(domainPat)
	if (domainArray == null) {
		//alert("The domain name doesn't seem to be valid.");
	    return false;
	}
   
	var atomPat = new RegExp(atom,"g")
	var domArr = domain.match(atomPat)
	var len = domArr.length
	if (domArr[domArr.length - 1].length < 2 || domArr[domArr.length - 1].length > 3) {
	   //alert("The address must end in a three-letter domain, or two letter country.");
	   return false;
	}

	if (domArr[domArr.length - 1].length == 3 && len < 2) {
	   //alert("This address is missing a hostname!")
	   return false;
	}
	return true;
}



function FormShowHelp(sText){
	var sURL = "Modules/Forms/FormShowHelp.asp?s=" + sText + ""
	var nW = 320;
	var nH = 380;

	if(screen.width){
		posX = (screen.width - nW) / 2;
		posY = (screen.height - nH) / 2;
	}
		
	args = "width=" + nW + ","
	+ "height=" + nH + ","
	+ "resizable=1,"		// 0/1 
	+ "scrollbars=1,"		// 0/1 
	+ "left=" + posX + ","     			//IE Only
	+ "top=" + posY;           			//IE Only
	
	window.open(sURL,"HelpWin",args);


}





function IsAlphanumeric(str){
	var alphaExp = /^[0-9a-zA-Z]+$/;
	if(str.match(alphaExp)){
		return true;
	}
	else{
		return false;
	}
}





//-->
