var Page_ValidationVer = "125";
var Page_IsValid = true;
var Page_BlockSubmit = false;
function ValidatorUpdateDisplay(val) {
  if(navigator.userAgent.indexOf("Firefox") != -1)
  {
   if(val.getAttribute("isvalid")=="true")
   	val.style.visibility="hidden";
	else
	val.style.visibility="visible";
  	//val.style.visibility = val.getAttribute("isvalid") ? "hidden" : "visible";
  }
  else
  {
    if (typeof(val.display) == "string") {    
        if (val.display == "None") {
            return;
        }
        if (val.display == "Dynamic") {
            val.style.display = val.isvalid ? "none" : "inline";
            return;
        }
    }
    val.style.visibility = val.isvalid ? "hidden" : "visible";
	}
}
function ValidatorUpdateIsValid() {
   if(navigator.userAgent.indexOf("Firefox") != -1)
   {
       var i;
	  for (i = 0; i < Page_Validators.length; i++) {
			
			if(Page_Validators[i].getAttribute("isvalid")=="false")
			{
				Page_IsValid = false;
				return;
			}
	   }
	   Page_IsValid = true;
   }
   else
   {
		var i;
		for (i = 0; i < Page_Validators.length; i++) {
			
			if (!Page_Validators[i].isvalid) {
				Page_IsValid = false;
				return;
			}
	   }
	   Page_IsValid = true;
   }
}
function ValidatorHookupControlID(controlID, val) {
    if (typeof(controlID) != "string") {
        return;
    }
    var ctrl = document.all(controlID);
    if (typeof(ctrl) != "undefined") {
        ValidatorHookupControl(ctrl, val);
    }
    else {
        val.isvalid = true;
        val.enabled = false;
    }
}
function ValidatorHookupControl(control, val) {
    if (typeof(control.tagName) == "undefined" && typeof(control.length) == "number") {
        var i;
        for (i = 0; i < control.length; i++) {
            var inner = control[i];
            if (typeof(inner.value) == "string") {
                ValidatorHookupControl(inner, val);
            } 
        }
        return;
    }
    else if (control.tagName != "INPUT" && control.tagName != "TEXTAREA" && control.tagName != "SELECT") {
        var i;
        for (i = 0; i < control.children.length; i++) {
            ValidatorHookupControl(control.children[i], val);
        }
        return;
    }
    else {
        if (typeof(control.Validators) == "undefined") {
            control.Validators = new Array;
            var ev;
            if (control.type == "radio") {
                ev = control.onclick;
            } else {
                ev = control.onchange;
            }
            if (typeof(ev) == "function" ) {            
                ev = ev.toString();
                ev = ev.substring(ev.indexOf("{") + 1, ev.lastIndexOf("}"));
            }
            else {
                ev = "";
            }
            var func = new Function("ValidatorOnChange(); " + ev);
            if (control.type == "radio") {
                control.onclick = func;
            } else {            
                control.onchange = func;
            }
        }
        control.Validators[control.Validators.length] = val;
    }    
}
function ValidatorGetValue(id) {
    var control;
	
	if(navigator.userAgent.indexOf("Firefox") != -1)
	{
		control = document.getElementsByName(id)[0];
		return control.value;
	}	
	else 
	{
    	control = document.all[id];
		if (typeof(control.value) == "string") {
			return control.value;
		}
		if (typeof(control.tagName) == "undefined" && typeof(control.length) == "number") {
			var j;
			for (j=0; j < control.length; j++) {
				var inner = control[j];
				if (typeof(inner.value) == "string" && (inner.type != "radio" || inner.status == true)) {
					return inner.value;
				}
			}
		}
		else {
			return ValidatorGetValueRecursive(control);
		}
		return "";
	}
    
}
function ValidatorGetValueRecursive(control)
{
    if (typeof(control.value) == "string" && (control.type != "radio" || control.status == true)) {
        return control.value;
    }
    var i, val;
    for (i = 0; i<control.children.length; i++) {
        val = ValidatorGetValueRecursive(control.children[i]);
        if (val != "") return val;
    }
    return "";
}
function Page_ClientValidate() {
    var i;
	for (i = 0; i < Page_Validators.length; i++) {
        ValidatorValidate(Page_Validators[i]);
    }
	ValidatorUpdateIsValid();  
	//alert("Line 162 : "+Page_IsValid);  
    ValidationSummaryOnSubmit();
    Page_BlockSubmit = !Page_IsValid;
	return Page_IsValid;
}
function ValidatorCommonOnSubmit() {
    event.returnValue = !Page_BlockSubmit;
    Page_BlockSubmit = false;
}
function ValidatorEnable(val, enable) {
    val.enabled = (enable != false);
    ValidatorValidate(val);
    ValidatorUpdateIsValid();
}
function ValidatorOnChange() {
    var vals = event.srcElement.Validators;
    var i;
    for (i = 0; i < vals.length; i++) {
        ValidatorValidate(vals[i]);
    }
    ValidatorUpdateIsValid();    
}
function ValidatorValidate(val) {   

if(navigator.userAgent.indexOf("Firefox") != -1)
{
    val.setAttribute('isvalid','true');
	str=val.getAttribute("evaluationfunction")+'(val);';
	val.setAttribute('isvalid',eval(str));
	ValidatorUpdateDisplay(val);
}
else if(navigator.userAgent.indexOf("MSIE") != -1)
{
    val.isvalid = true;
    if (val.enabled != false) {
        if (typeof(val.evaluationfunction) == "function") {
            val.isvalid = val.evaluationfunction(val); 
        }
    }
    ValidatorUpdateDisplay(val);
}
/*
else if(navigator.userAgent.indexOf("Netscape") != -1)
{
   
   
   //window.location = "http://www.i-code.co.uk";
}
else
{
  // window.location = "http://www.i-code.co.uk";
}
*/
else
{
    val.isvalid = true;
    if (val.enabled != false) {
        if (typeof(val.evaluationfunction) == "function") {
            val.isvalid = val.evaluationfunction(val); 
        }
    }
    ValidatorUpdateDisplay(val);
}

    
}
function ValidatorOnLoad() {

		if(navigator.userAgent.indexOf("Firefox") != -1)
		{
			var i, val;
			for (i = 0; i < Page_Validators.length; i++) {
				val = Page_Validators[i];
				eval("val.setAttribute('evaluationfunction'),'" + val.evaluationfunction + "'");
				if (val.getAttribute("isvalid") == "") {
						val.setAttribute("isvalid",false);                                
						Page_IsValid = false;
					} 
					else {
						val.setAttribute("isvalid",true);    
					}
				val.setAttribute("enabled",false); 
				
				ValidatorHookupControlID(val.getAttribute("controltovalidate"), val);
				ValidatorHookupControlID(val.getAttribute("controlhookup"), val);
			}
			Page_ValidationActive = true;
		}
		else //if(navigator.userAgent.indexOf("MSIE") != -1)
		{
			 if (typeof(Page_Validators) == "undefined")
					return;
				var i, val;
				for (i = 0; i < Page_Validators.length; i++) {
					val = Page_Validators[i];
					if (typeof(val.evaluationfunction) == "string") {
						eval("val.evaluationfunction = " + val.evaluationfunction + ";");
					}
					if (typeof(val.isvalid) == "string") {
						if (val.isvalid == "False") {
							val.isvalid = false;                                
							Page_IsValid = false;
						} 
						else {
							val.isvalid = true;
						}
					} else {
						val.isvalid = true;
					}
					if (typeof(val.enabled) == "string") {
						val.enabled = (val.enabled != "False");
					}
					ValidatorHookupControlID(val.controltovalidate, val);
					ValidatorHookupControlID(val.controlhookup, val);
				}
				Page_ValidationActive = true;
		}

    
	
  
}
function ValidatorConvert(op, dataType, val) {
    function GetFullYear(year) {
        return (year + parseInt(val.century)) - ((year < val.cutoffyear) ? 0 : 100);
    }
    var num, cleanInput, m, exp;
    if (dataType == "Integer") {
        exp = /^\s*[-\+]?\d+\s*$/;
        if (op.match(exp) == null) 
            return null;
        num = parseInt(op, 10);
        return (isNaN(num) ? null : num);
    }
    else if(dataType == "Double") {
        exp = new RegExp("^\\s*([-\\+])?(\\d+)?(\\" + val.decimalchar + "(\\d+))?\\s*$");
        m = op.match(exp);
        if (m == null)
            return null;
        cleanInput = m[1] + (m[2].length>0 ? m[2] : "0") + "." + m[4];
        num = parseFloat(cleanInput);
        return (isNaN(num) ? null : num);            
    } 
    else if (dataType == "Currency") {
        exp = new RegExp("^\\s*([-\\+])?(((\\d+)\\" + val.groupchar + ")*)(\\d+)"
                        + ((val.digits > 0) ? "(\\" + val.decimalchar + "(\\d{1," + val.digits + "}))?" : "")
                        + "\\s*$");
        m = op.match(exp);
        if (m == null)
            return null;
        var intermed = m[2] + m[5] ;
        cleanInput = m[1] + intermed.replace(new RegExp("(\\" + val.groupchar + ")", "g"), "") + ((val.digits > 0) ? "." + m[7] : 0);
        num = parseFloat(cleanInput);
        return (isNaN(num) ? null : num);            
    }
    else if (dataType == "Date") {
        var yearFirstExp = new RegExp("^\\s*((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})\\s*$");
        m = op.match(yearFirstExp);
        var day, month, year;
        if (m != null && (m[2].length == 4 || val.dateorder == "ymd")) {
            day = m[6];
            month = m[5];
            year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10))
        }
        else {
            if (val.dateorder == "ymd"){
                return null;		
            }						
            var yearLastExp = new RegExp("^\\s*(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))\\s*$");
            m = op.match(yearLastExp);
            if (m == null) {
                return null;
            }
            if (val.dateorder == "mdy") {
                day = m[3];
                month = m[1];
            }
            else {
                day = m[1];
                month = m[3];
            }
            year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10))
        }
        month -= 1;
        var date = new Date(year, month, day);

        return (typeof(date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate()) ? date.valueOf() : null;
    }
    else {
        return op.toString();
    }
}
function ValidatorCompare(operand1, operand2, operator, val) {
    var dataType = val.type;
    var op1, op2;
    if ((op1 = ValidatorConvert(operand1, dataType, val)) == null)
        return false;    
    if (operator == "DataTypeCheck")
        return true;
    if ((op2 = ValidatorConvert(operand2, dataType, val)) == null)
        return true;
    switch (operator) {
        case "NotEqual":
            return (op1 != op2);
        case "GreaterThan":
            return (op1 > op2);
        case "GreaterThanEqual":
            return (op1 >= op2);
        case "LessThan":
            return (op1 < op2);
        case "LessThanEqual":
            return (op1 <= op2);
        default:
            return (op1 == op2);            
    }
}
function CompareValidatorEvaluateIsValid(val) {

    if(navigator.userAgent.indexOf("Firefox") != -1)
	{
		var value = ValidatorGetValue(val.getAttribute("controltovalidate"));
		if (ValidatorTrim(value).length == 0)
			return true;
		var compareTo = "";
		if (null == document.getElementsByName(val.getAttribute("controltocompare"))) {
			//if (typeof(val.valuetocompare) == "string") {
				compareTo = val.getAttribute("valuetocompare");
			//}
		}
		else {
			compareTo = ValidatorGetValue(val.getAttribute("controltocompare"));
		}
		if(value==compareTo)
			return true;
		else
			return false;
		
		//return false;
		//return ValidatorCompare(value, compareTo, val.getAttribute("operator"), val);

	
	}
	else
	{
		var value = ValidatorGetValue(val.controltovalidate);
		if (ValidatorTrim(value).length == 0)
			return true;
		var compareTo = "";
		if (null == document.all(val.controltocompare)) {
			if (typeof(val.valuetocompare) == "string") {
				compareTo = val.valuetocompare;
			}
		}
		else {
			compareTo = ValidatorGetValue(val.controltocompare);
		}
		return ValidatorCompare(value, compareTo, val.operator, val);
	}
}
function CustomValidatorEvaluateIsValid(val) {
    var value = "";
    if (typeof(val.controltovalidate) == "string") {
        value = ValidatorGetValue(val.controltovalidate);
        if (ValidatorTrim(value).length == 0)
            return true;
    }
    var args = { Value:value, IsValid:true };
    if (typeof(val.clientvalidationfunction) == "string") {
        eval(val.clientvalidationfunction + "(val, args) ;");
    }        
    return args.IsValid;
}
function RegularExpressionValidatorEvaluateIsValid(val) {
    var value = ValidatorGetValue(val.controltovalidate);
    if (ValidatorTrim(value).length == 0)
        return true;        
    var rx = new RegExp(val.validationexpression);
    var matches = rx.exec(value);
    return (matches != null && value == matches[0]);
}
function ValidatorTrim(s) {
    var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
    return (m == null) ? "" : m[1];
}
function RequiredFieldValidatorEvaluateIsValid(val) {
   
	if(navigator.userAgent.indexOf("Firefox") != -1)
	{
		return (ValidatorTrim(ValidatorGetValue(val.getAttribute("controltovalidate"))) != ValidatorTrim(val.getAttribute("initialvalue")))
	}
	else
	    return (ValidatorTrim(ValidatorGetValue(val.controltovalidate)) != ValidatorTrim(val.initialvalue))
	
}
function EmailFieldValidatorEvaluateIsValid(val) {
    if(navigator.userAgent.indexOf("Firefox") != -1)
	return (echeck(ValidatorGetValue(val.getAttribute("controltovalidate"))))
	else
    return (echeck(ValidatorGetValue(val.controltovalidate)))
}
function NotRequiredEmailFieldValidatorEvaluateIsValid(val) {
    if(navigator.userAgent.indexOf("Firefox") != -1)
	return (echeck1(ValidatorGetValue(val.getAttribute("controltovalidate"))))
	else
    return (echeck1(ValidatorGetValue(val.controltovalidate)))
}
function USPhoneFieldValidatorEvaluateIsValid(val)
{
    if(navigator.userAgent.indexOf("Firefox") != -1)
	return (phonecheck(ValidatorGetValue(val.getAttribute("controltovalidate")),val.getAttribute("controltovalidate")))
	else
    return (phonecheck(ValidatorGetValue(val.controltovalidate),val.controltovalidate))
}
 
function IntegerFieldValidatorEvaluateIsValid(val) {
	if(ValidatorTrim(ValidatorGetValue(val.controltovalidate)).length==0)
		return false;
	else
		return (intcheck(ValidatorGetValue(val.controltovalidate)));
}
function QuantityFieldValidatorEvaluateIsValid(val) {
	if(ValidatorTrim(ValidatorGetValue(val.controltovalidate)).length==0)
		return false;
	else if(ValidatorTrim(ValidatorGetValue(val.controltovalidate))==0)
		return false;		
	else
		return (qtycheck(ValidatorGetValue(val.controltovalidate)));
}
function intcheck(val)
{

for(i=0;i<val.length-1;i++)
{

ch=val.substr(i,1);

if(ch>="0" && ch<="9");
else
return false;
}
return true;
}

function qtycheck(val)
{
	for(i=0;i<val.length;i++)
	{
		ch=val.substr(i,1);
		if(ch>="0" && ch<="9");
		else
		return false;
	}
return true;
}

function phonecheck(val,id)
{

	var FmtStr1="";
    var index1 = 0;
    var LimitCheck1;
	if(navigator.userAgent.indexOf("Firefox") != -1)
	{
		control = document.getElementsByName(id)[0];
	}	
	else 
	{
    	control = document.all[id];
	}

    LimitCheck1 = val.length;
    while (index1 != LimitCheck1)
      {
        if (isNaN(parseInt(val.charAt(index1))))
          { }
        else
          { FmtStr1 = FmtStr1 + val.charAt(index1); }
        index1 = index1 + 1;
      }
    if (FmtStr1.length == 10)
      {
        FmtStr1 = "(" + FmtStr1.substring(0,3) + ") " + FmtStr1.substring(3,6) + "-" + FmtStr1.substring(6,10);
		control.value=FmtStr1;
      }
    else
      {
        FmtStr1=val;
		return false;
      }
	  return true;
   
}
   

function PasswordFieldValidatorEvaluateIsValid(val) {
   if(navigator.userAgent.indexOf("Firefox") != -1)
   {
   		if(ValidatorGetValue(val.getAttribute("controltovalidate")).length>=6)
		    return  true;
   }
   else
   { 
	if((ValidatorGetValue(val.controltovalidate)).length>=6)
	    return  true;
	}
	return false;
}

function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
			   return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    return false;
		 }
		
		 if (str.indexOf(" ")!=-1){
		    return false;
		 }

 		 return true					
	}
	
function echeck1(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		str=ValidatorTrim(str);
		if(str.length==0)
			return true;
					
		if (str.indexOf(at)==-1){
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
			   return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    return false;
		 }
		
		 if (str.indexOf(" ")!=-1){
		    return false;
		 }

 		 return true					
	}	
function RangeValidatorEvaluateIsValid(val) {
    var value = ValidatorGetValue(val.controltovalidate);
    if (ValidatorTrim(value).length == 0) 
        return true;
    return (ValidatorCompare(value, val.minimumvalue, "GreaterThanEqual", val) &&
            ValidatorCompare(value, val.maximumvalue, "LessThanEqual", val));
}
function ValidationSummaryOnSubmit() {
    if(navigator.userAgent.indexOf("Firefox") != -1)
	{
		return '';
	}
	else
	{
    if (typeof(Page_ValidationSummaries) == "undefined") 
        return;
    var summary, sums, s;
    for (sums = 0; sums < Page_ValidationSummaries.length; sums++) {
        summary = Page_ValidationSummaries[sums];
        summary.style.display = "none";
        if (!Page_IsValid) {
            if (summary.showsummary != "False") {
                summary.style.display = "";
                if (typeof(summary.displaymode) != "string") {
                    summary.displaymode = "BulletList";
                }
                switch (summary.displaymode) {
                    case "List":
                        headerSep = "<br>";
                        first = "";
                        pre = "";
                        post = "<br>";
                        last = "";
                        break;
                    case "BulletList":
                    default: 
                        headerSep = "";
                        first = "<ul>";
                        pre = "<li>";
                        post = "</li>";
                        last = "</ul>";
                        break;
                    case "SingleParagraph":
                        headerSep = " ";
                        first = "";
                        pre = "";
                        post = " ";
                        last = "<br>";
                        break;
                }
                s = "";
                if (typeof(summary.headertext) == "string") {
                    s += summary.headertext + headerSep;
                }
                s += first;
                for (i=0; i<Page_Validators.length; i++) {
                    if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage) == "string") {
                        s += pre + Page_Validators[i].errormessage + post;
                    }
                }   
                s += last;
                summary.innerHTML = s; 
                window.scrollTo(0,0);
            }
            if (summary.showmessagebox == "True") {
                s = "";
                if (typeof(summary.headertext) == "string") {
                    s += summary.headertext + "<BR>";
                }
                for (i=0; i<Page_Validators.length; i++) {
                    if (!Page_Validators[i].isvalid && typeof(Page_Validators[i].errormessage) == "string") {
                        switch (summary.displaymode) {
                            case "List":
                                s += Page_Validators[i].errormessage + "<BR>";
                                break;
                            case "BulletList":
                            default: 
                                s += "  - " + Page_Validators[i].errormessage + "<BR>";
                                break;
                            case "SingleParagraph":
                                s += Page_Validators[i].errormessage + " ";
                                break;
                        }
                    }
                }
                span = document.createElement("SPAN");
                span.innerHTML = s;
                s = span.innerText;
                alert(s);
            }
        }
    }
	}
}
