// JScript source code

var DoValidation = true;
var required = new Array();
var requiredLable = new Array();
var requiredType = new Array();

function validate(oForm)
{

	var valid = true;
	var errLables = "";
	var focusSet = false;
	if(typeof(prevalidate)=='function')
		valid = prevalidate(oForm);
	if(valid==false) return(valid);				

	if(DoValidation)
	{
		for( f = 0; f < required.length; f++)
		{
		    var fValid = false;
			var o = document.getElementById(required[f]);
			var t = requiredType[f] + "";
		    var requiredTypeOptions = t.split(",");
		        
		    switch(requiredTypeOptions[0])
		    {        
                case "Email":
                    var regex = /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i;
                    fValid = regex.test(o.value);                    
		            break;
		        case "URL":
		            var regex = /^(?:https?|s?ftp|telnet|ssh|scp):\/\/(?:(?:[\w]+:)?\w+@)?(?:(?:(?:[\w-]+\.)*\w[\w-]{0,66}\.(?:[a-z]{2,6})(?:\.[a-z]{2})?)|(?:(?:25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.)(?:(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(?:25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})))(?:\:\d{1,5})?(?:\/(~[\w-_.])?)?(?:(?:\/[\w-_.]*)*)?\??(?:(?:[\w-_.]+\=[\w-_.]+&?)*)?$/i;
		            fValid = regex.test(o.value);                    
		            break;
		        case "Match":
		            fValid = document.getElementById(requiredTypeOptions[1]).value == o.value;
		            break;
    		    default:
			        if((o.type=="checkbox" && o.checked == false) ||
			           (o.type=="password" && o.value.length < requiredType[f]) ||
			           (o.selectedIndex!=null && o.selectedIndex < requiredType[f]) ||
			           (o.type=="text" && o.value.length < requiredType[f]))
			        {
				        fValid = false;
			        }
			        else
                        fValid = true;			        
			        break;
			}
			        
			if(!fValid)
			{
			    valid=false;
			    o.style.backgroundColor = '#FF0000'; //'#ff4f52'; //'#FFEE00';
		        errLables += requiredLable[f] + " is missing or invalid!\n";
			}
			else
			    o.style.backgroundColor = '';
		    
		    if(focusSet == false && fValid == false) 
		    {
		        o.focus();	
		        focusSet = true;
		    }
		}
		
		if(valid==false)
			alert("You have fields with missing or invalid entries. Please correct and resubmit your information.\n\n" + errLables);
		
		return(valid);
	}
	else
		return(true);
}

function AddReq(strLabel, strField, strType)
{
    if(strType==null) strType = "1";
	required[required.length] = strField;
	requiredLable[requiredLable.length] = strLabel;
	requiredType[requiredType.length] = strType;
}

