﻿// JScript File
// developed by M. Arockiaraj 

// whitespace characters
var whitespace = " \t\n\r";
var defaultEmptyOK = false;

function Val(id) {
	obj = document.getElementById(id);
	if (obj == null)
		return '';
	else
		return obj.value;
}
function ValidateFields(form,fields_array)
{
	var field_arr= new Array();
    var field;
	var validate_str;
	var message;
	for(k=0;k<fields_array.length;k++)
	{		 
		field_arr = fields_array[k].split("#");
		field =eval("document.forms[0]." + field_arr[0]);
		validate_str = field_arr[1];
		message = field_arr[2];
		
		if(field_arr.length>3)
		{
			
			extra_field =  eval(form +"."+field_arr[3]);
			
		}
		else
		extra_field="";
		if(!ValidObj(field,validate_str,message,extra_field))
			    return false;
	}	
	return true;
}

function ValidObj(obj,validatestr,message,match_field)
{
	var val_array= new Array();
	if(validatestr!="")
	{
		val_array = validatestr.split(",");
	}
	
	for(i=0;i<val_array.length;i++)
	{
		switch(val_array[i])
		{
			case "required":
				if(obj.value=="" || isWhitespace(obj.value))
				{
					alert("Please enter "+ message);
					obj.focus();
					return false;
				}
			break;
			case "requiredchar":
				if(!isNaN(obj.value) && obj.value!="")
				{
					alert("Please check "+ message);
					obj.focus();
					return false;
				}
			break;
			case "email":
			    if(obj.value=="")
			    {
    			    return true;
			    }
				if(!echeck(obj.value))
				{
					obj.focus();
					return false;
				}
			break;
			case "requiredsel":
			
				if(obj.value=="Please Select")
				{
					alert("Please Select "+ message);
					obj.focus();
					return false;
				}
			break;
			case "requiredDrp":
				if(obj.value=="0")
				{
					alert("Please Select "+ message);
					obj.focus();
					return false;
				}
			break;
			case "number":
				if(isNaN(obj.value))
				{
					alert("Please check "+ message);
					obj.focus();
					return false;
				}
			break;
			case "reqlen":
				var str;
				str=obj.value;
				if(str.length<6)
				{
					alert("The length of  password must be more then 5 character.");
					obj.focus();
					return false;
				}
			break;
			case "dtRequired":
			if(obj.value=="dd/mm/yyyy")
			{
				alert("Please Select "+ message);
				obj.focus();
				return false;
			}
			break;
			case "PhoneNo":
				if( isNaN(obj.value) || obj.length<= 10 || obj.length >= 13)
				{
					alert("please Enter correct " + message);
					obj.focus();
					return false;
				}
			break;
			case "isDate":
			    if(obj.value != "dd/mm/yyyy")
			    {
			        if(obj.value != "")
			        {
			            if (!isDate(dd(obj.value),mm(obj.value),yy(obj.value)))
		                {
                            alert("Invalid " + message);
                            return false;
                        }
                    }
                }
			break;
			case "chk":
				if( !obj.checked)
				{
					alert("Please " +message);
					obj.focus();
					return false;
				}
			break;
            case "MobileNo":
				var y=obj.value;
                if(isNaN(y)||y.indexOf(" ")!=-1)
                {
                  alert("Enter Correct Mobile Number")
                  return false;  
                }
                if (y.charAt(0)=="9")
                {
                   if (y.length!=10)
                    {
                        alert("Enter Correct Mobile Number")
                        return false; 
                    } 
                }
                else if(y.charAt(0)=="0")
                {
                    if (y.charAt(1)=="9" )
                    {
                        if (y.length!=11)
                        {
                            alert("Enter Correct Mobile Number")
                            return false; 
                        }                        
                    }
                    else
                    {
                        alert("Enter Correct Mobile Number3")
                        return false; 
                    }
                }
                else
                {
                    alert("Enter Correct Mobile Number3")
                    return false; 
                } 
			break;
			case "minsalrange":
				if(parseInt(obj.value) <5000 )
				{
					alert(message+" value must be >= 5000");
					obj.focus();
					return false;
				}
			break;
			case "Pincode":
				if( isNaN(obj.value) || (obj.value.length!=6 && obj.value.length!=0))
				{
					alert("Please enter valid " +message);
					obj.focus();
					return false;
				}
			break;
			//check the given value is int or number otherwise false
			case "int":
			    str=obj.value;
                if (str.indexOf(".")==-1)
                 {
                 }
                else
                {
                    alert("Please enter valid " + message + "\n Help:It should be integer");
				    obj.focus();
				    return false;
                }
                if(isNaN(obj.value))
				{
					alert("Please check "+ message + "\n Help:It should be integer");
					obj.focus();
					return false;
				}
				break;
			//check the Currency rate
			case "CRate":
                if (parseInt(obj.value)=="Nan")
			    {
				    alert("Please enter valid " + message);
				    obj.focus();
				    return false;
			    }
			    var s=obj.value;
			    var sLength = s.length;
			    var i = 1;
                // look for .
                while ((i < sLength) && (s.charAt(i) != "."))
                { i++
                }
               
                if ((i >= sLength) || (s.charAt(i) != "."))
                {p
                    alert(message +" rate should be like this 45.00");
                    return false;
                }
			break;
			case "Password":
			    var obj2=eval("document.forms[0]." + obj.name + "1");
				if(obj.value != obj2.value)
				{
					alert("Password and conform password should be same");
					obj.focus();
					return false;
				}
			break;
		}
	}
	return true;
}
function isEmail(s)
{   
    if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
   
    // is s whitespace?
    if (isWhitespace(s)) return false;
    
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}
function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}
function isWhitespace (s)

{   var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}

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){
		   alert("Invalid E-mail ID")
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Invalid E-mail ID")
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Invalid E-mail ID")
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Invalid E-mail ID")
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Invalid E-mail ID")
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Invalid E-mail ID")
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Invalid E-mail ID")
		    return false
		 }

 		 return true					
	}
	function CustomValidate(form,fields_array)
    {
	    var field_arr= new Array();
        var field;
        var groups;
	    var validate_str;
	    var message;
	    for(k=0;k<fields_array.length;k++)
	    {		 
		    field_arr = fields_array[k].split("#");
		    groups =field_arr[0];	
		    validate_str = field_arr[1];
		    message = field_arr[2];
    		if(field_arr.length>3)
		    {
			    extra_field =  field_arr[3];
    			
		    }
		    else
		    extra_field="";
		    if(!ValidGroups(groups,validate_str,message,extra_field))
			        return false;
	    }	
	    return true;
    }
function ValidGroups(groups,validatestr,message,match_field)
{
	switch(validatestr)
	{
		case "selectOne":
		    var field_arr= new Array();
		    field_arr = groups.split(",");
		    var i;	 
		    var flag=true;   
		    for(i=0;i<field_arr.length;i++)
	        {
	            var obj=eval("document.forms[0]" +"."+field_arr[i]);
	            if(obj.value=="" || isWhitespace(obj.value))
			    {
			        flag=false;
			    }
			    else
			        return true;
			}
			if(!flag)
			{
			    alert("Please " + message);
                var objSet=eval("document.forms[0]" +"."+field_arr[0]);
                objSet.focus();
                return false;
			}
		break;
	    case "oneGroupRequired":
	    var group = new Array();
	    group=groups.split(":");
	    var i;
		var flag=true;   
	    for(i=0;i<group.length;i++)
	    {
	        var field_arr= new Array();
		    field_arr = group[i].split(",");
		    var j;	    
		    for(j=0;j<field_arr.length;j++)
	        {
                var obj=eval("document.forms[0]" +"."+field_arr[j]);
                if(obj.value=="" || isWhitespace(obj.value))
	            {
	                flag=false;
	            }
	            else
	            {
	                return true;                
	            }
			}
	    }
	    if(!flag)
		{
		    alert("Please " + message);
            return false;
		}
		else
		return true;
	    break;    
	    //when particular group fields not required. but user enter onl field and he should enter all other missing fields in that group
	    case "groupAllwhenOneShould":
	        var field_arr = new Array();
	        field_arr=groups.split(",");
	        var flag=false;
	        for(j=0;j<field_arr.length;j++)
            {
                var obj=eval("document.forms[0]" +"."+field_arr[j]);
                if(obj.value=="" || isWhitespace(obj.value))
                {
                    flag=flag | false;
                }
                else
                {
                    flag=true;
                }
		    }
		    if(flag)
		    {
		        var msg=new Array();
                msg=message.split(";");
		        for(j=0;j<field_arr.length;j++)
                {
                    var obj=eval("document.forms[0]" +"."+field_arr[j]);
                    if(obj.value=="" || isWhitespace(obj.value))
                    {
                        alert("Please enter " + msg[j]);
                        var objSet=eval("document.forms[0]" +"."+field_arr[j]);
                        objSet.focus();
                        return false;
                    }
		        }
		        return true;
		    }
		    return true;
		break;
	case "DtMin":
	
		    var field_arr = new Array();
	        field_arr=groups.split(",");
	        var obj1=eval("document.forms[0]" + "." +field_arr[0]);
	        var obj2=eval("document.forms[0]" + "." +field_arr[1]);
	        if(obj1.value == "" || obj2.value == "" || obj1.value == "dd/mm/yyyy" || obj2.value == "dd/mm/yyyy")
	        return true;
	        val1=mm(obj1.value) + "/" + dd( obj1.value) + "/" + yy(obj1.value);
	        val2=mm(obj2.value) + "/" + dd( obj2.value) + "/" +  yy(obj2.value);
	        var val1 =new Date( val1 );
	        var val2 = new Date(val2);
	        if (val1 > val2) 
	        {
	            alert("Please " + message);
	            return false;
	        }   
	        else
	        {
	        return true;
	        }
	    break;
	    case "other":
		    var field_arr = new Array();
	        field_arr=groups.split(",");
	        var obj1=eval("document.forms[0]" + "." +field_arr[0]);
	        var obj2=eval("document.forms[0]" + "." +field_arr[1]);
	        if(obj1.value == "Other")
	        {
	            if( obj2.value=="")
	            {
	                alert("Please " + message);
	                obj2.focus();
	                return false;
	            }
	            else
	            return true;
	        }
	        else
	        return true;	        
	    break;

	}
}
function dd(varDate)
	{
	    var field_arr = new Array();
        field_arr=varDate.split("/");
       if (field_arr.length > 0)
       {
       return field_arr[0];
       }
       else
       {
       return 0;
       }
	}
	function mm(varDate)
	{
        var field_arr = new Array();
        field_arr=varDate.split("/");
       if (field_arr.length > 0)
       {
       return field_arr[1];
       }
       else
       {
       return 0;
       }
	}
	function yy(varDate)
	{
        var field_arr = new Array();
        field_arr=varDate.split("/");
       if (field_arr.length > 0)
       {
       return field_arr[2];
       }
       else
       {
       return 0;
       }
	}
	function y2k(number) { return (number < 1000) ? number + 1900 : number; }

function isDate(day,month,year) {
// checks if date passed is valid
// will accept dates in following format:
// isDate(dd,mm,ccyy), or
// isDate(dd,mm) - which defaults to the current year, or
// isDate(dd) - which defaults to the current month and year.
// Note, if passed the month must be between 1 and 12, and the
// year in ccyy format.
    var today = new Date();
    year = ((!year) ? y2k(today.getYear()):year);
    month = ((!month) ? today.getMonth():month-1);
    if (!day) return false
    var test = new Date(year,month,day);
    if ( (y2k(test.getYear()) == year) &&
         (month == test.getMonth()) &&
         (day == test.getDate()) )
        return true;
    else
        return false
}
function MaxCharCount(txt, spn, length) {
	var EnterValue = Val(txt);
	document.getElementById(spn).innerHTML = length - EnterValue.length;
}
