// JavaScript Document
var alertError= false;
var pattern;
function validateRequired(field)
    {
        with (field)
            {
            if (value==null||value=="")
                  {
                
              if(alertError) {alert ("Required field is missing"); return false;}
                  document.getElementById("err_"+name).innerHTML = "Required field is missing";
                  return false;
                }
            else {
                if(!alertError)
                document.getElementById("err_"+field.name).innerHTML = "";
                return true;
                }

            }
    }    

function validateDate(field,errorMsg)
    {
    //Matches the yyyy-mm-dd date format and also validates month and number of days in a month. Could be improved as currently all leap year dates     (yyyy-02-29) will validate.    
     //strPattern = "^\d{1,2}\-\d{1,2}\-\d{2,4}$";
     pattern="^[0-9]{4}\\-[0-9]{1,2}\\-[0-9]{1,2}$";
 //patttern = "^[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))$";    
    
    
    with (field)
            {
            if (!field.value.match(pattern))
                  {
                
              if(alertError) {alert ("Required field is missing"); return false;}
                  document.getElementById("err_"+name).innerHTML = errorMsg;
                  return false;
                }
            else {
                if(!alertError)
                document.getElementById("err_"+field.name).innerHTML = "";
                return true;
                }

            }
    
        //if(!dateParem.value.match(pattern))
//        {
//            alert ("Required date format is yyyy-mm-dd");
//            return false;
//        }
    }

function validatePositive(field,errorText)
    {
        
        pattern = "^\d*\.{0,1}\d+$";

        with (field)
            {
        if(!field.value.match(pattern))
        {
            if(alertError) {alert ("Required field is missing"); return false;}
                  document.getElementById("err_"+name).innerHTML = errorText;
                  return false;
                }
            else {
                if(!alertError)
                document.getElementById("err_"+field.name).innerHTML = "";
                return true;
                }

        }
    }
    
function validateInteger(field,errorText1,errorText2)
    {


        pattern="^[0-9][0-9]*$";
        with (field)
            {        
        
        if(!field.value.match(pattern))
        {
            if(alertError) {alert ("Required field is missing"); return false;}
                  document.getElementById("err_"+name).innerHTML = errorText1;
                  return false;
                }
            else {
                if(!alertError)
                document.getElementById("err_"+field.name).innerHTML = "";
                return true;
                }
                

        return false;
        }
    }
    
function validateDecimal(field,errorText)
    {
        pattern = "/^\s*(\+|-)?((\d+(\.\d+)?)|(\.\d+))\s*$";
        pattern = "^[0-9][0-9]*(\.[0-9]*)?$";
        with (field)
        {
        if(!field.value.match(pattern))
        {
            if(alertError) {alert ("Required field is missing"); return false;}
                document.getElementById("err_"+name).innerHTML = errorText;
                return false;
                }
            else {
                if(!alertError)
                document.getElementById("err_"+field.name).innerHTML = "";
                return true;
                }

         }
    }
    
function validateRegexp(field,errorText)
    {
        
        regExpression = "^[a-zA-Z0-9]";
        with (field)
        {
        if(!field.value.match(regExpression))
        {
            if(alertError) {alert ("Required field is missing"); return false;}
                document.getElementById("err_"+field.name).innerHTML = errorText;
                return false;
                }
            else {
                if(!alertError)
                document.getElementById("err_"+field.name).innerHTML = "";
                return true;
                }

         }
    }    
    
function validateComboRequired(field, errorText)
{
    //alert(field.value);
        with (field)
            {
            if (value==""  || value==-1)
                  {
                  if(alertError) {alert (errorText); return false;}
                  document.getElementById("err_"+name).innerHTML =errorText;
                  return false
                }
            else {
                if(!alertError)
                document.getElementById("err_"+name).innerHTML = "";
                return true;
                }
            }
}
    
function validateEmail(field, errorText)
    {
        
        with (field)
            {
            if (isValidEmail1(value)!="")
                  {
                  if(alertError) {alert (errorText); return false;}
                  document.getElementById("err_"+name).innerHTML =errorText;
                  return false
                }
            else {
                if(!alertError)
                document.getElementById("err_"+name).innerHTML = "";
                return true;
                }
            }
    }
    
function validateURL(field,errorText)
    {
        
        with (field)
            {
            if (!isValidURL(value))
                  {
                  if(alertError) {alert (errorText); return false;}
                 
                  document.getElementById("err_"+name).innerHTML =errorText;
                  return false
                }
            else {
                if(!alertError)
                document.getElementById("err_"+name).innerHTML = "";
                return true;
                }
            }
    }
    
function validateMatch(field,field2)
{
	if (field.value!=field2.value)
{ 
	document.getElementById("err_"+field.name).innerHTML = "The values must match";
	return false;
}
else
{
	document.getElementById("err_"+field.name).innerHTML = "";
	return true;
}
}


    
function isValidEmail1(strEmail) {
    var msg;
    var i;
    var len=strEmail.length;
    if(strEmail=="") {
            msg="Invalid Email Address.";
    } else {
        if((strEmail.charAt(0)=="@") || (strEmail.charAt(0)==".")) {
            msg="";
        } else {
    //    checking the number of the @ and dots in the email add    
            var countAt=0;
            var countDot=0;
            for (i=0; i<len; i++) {
                if(strEmail.charAt(i)=="@") {
                    countAt=countAt+1;
                }    
                if(strEmail.charAt(i)==".") {
                    countDot=countDot+1;
                }
            } //end of for (i=0; i<strEmail.length; i++) {...    
            if((countAt!=1) || (countDot<1)) {
                msg="Invalid Email Address.";
            } else {
        //    checking the position of the @ with respect to the dot 
                var posDot=0;
                var posAt=0;
                posDot=strEmail.lastIndexOf(".");
                posAt=strEmail.indexOf("@");
                //alert(posDot);
                if((posAt>posDot) || (posDot==(posAt+1))) {
                    msg=posDot;
                } else {
            //    checking the dot position and the @ postion at the end
                    if((strEmail.charAt(len)=="@") || (strEmail.charAt(len)==".")) {
                        msg="Invalid Email Address.";
                    } else {
                        /*     checking for the invalid characters
                         if(ereg('[^A-Za-z0-9_]', strEmail)) {
                    msg="Only letters, numbers and underscores(_).";        */
                        msg = "";
                    } //end of if((strEmail.charAt(len)=="@") || (strEmail.charAt(len)==".")) {...
                } //end of if((posAt>posDot) || (posDot==(posDot+1))) {...
            } //end of if((countAt!=1) ||(countDot<1)) {...        
        } //end  if((strEmail.charAt(i)=="@") || (strEmail.charAt(i)==".")) {...
    } //end of if(strEmail=="") {...
    return msg;    
}//end function    




function validateAlphabet(field)
    {
        return true;
        
    }

function validateType(field)
    {
        var controlId = field.name.substring(field.name.indexOf("_")+1);
        var required = field.value.substring(0,field.value.indexOf("##"));
        var remn = field.value.substring(field.value.indexOf("##")+2);
        var dataType = remn.substring(0,remn.indexOf("##"));
        var remn = remn.substring(remn.indexOf("##")+2);
        var errorText = remn;
        field = document.getElementById(controlId);
        if(required == "req" && validateRequired(field)==false) return false;
        if(dataType == "regEx" && validateRegexp(field,errorText)==false) return false;
        if(required!="req" && field.value=='') return true;
        if(dataType == "date" && validateDate(field,errorText)==false) return false;
        if(dataType == "PositiveInteger" && validatePositive(field,errorText)==false) return false;
        if(dataType == "Integer" && validateInteger(field,errorText)==false) return false;
        if(dataType == "Decimal" && validateDecimal(field,errorText)==false) return false;
        if(dataType == "email" && validateEmail(field,errorText)==false) return false;
        if(dataType == "url" && validateURL(field,errorText)==false) return false;
        if(dataType == "alphabet" && validateAlphabet(field,errorText)==false) return false;
        if(dataType ==  "cmb" && validateComboRequired(field,errorText)==false) return false;
        if(dataType == "match" && validateMatch(field,document.getElementById(errorText))==false) return false;
		return true;
    }    


function validateForm(frm)
{
//    alert("tkit");
    var isValid = true;
    for (i = 0; i<frm.elements.length; i++)
    {
        el = frm.elements[i];
        if (frm.elements[i].name.substr(0,3)=="val")
        {
            //alert(frm.elements[i].name);
            if(validateType(frm.elements[i])== false) {
                var controlId = frm.elements[i].name.substring(frm.elements[i].name.indexOf("_")+1);
                if(isValid) document.getElementById(controlId).focus();
                isValid = false;
                }
        }
    }    
    return isValid;
}


//*********************
function MatchesPattern(theString, pattern) {
    // Note: regular expressions passed to this function that have escaped
    // characters also need the escape character escaped, otherwise JavaScript
    // will make it disappear, for example:
    // MatchesPattern(mystring, '\w\.\w');    // won't work
    // MatchesPattern(mystring, '\\w\\.\\w'); // will work
    reg = new RegExp(pattern, 'g');
    return Boolean(reg.exec(theString));
}


function isValidURL(urlstring) {
    return MatchesPattern(urlstring, 'http:\\/\\/[\\w\\-]+(\\.[\\w\\-]+)+');
}
