﻿/* ==========================================================================================================================
 LibraryName:    Functions2.js
 Author:         Jatinder Singh Walia.
 Description:    This File Contains various Client-Side Functions Employed Commonly ThroughOut The Application.
 Compatibility(As on September 2010):
 
        Windows:1)IE 6.0 And Above.
                2)Mozilla Firefox.
                3)NetScape Navigator.
                4)Google Chrome.
                5)Safari.
                6)Opera.
                7)Maxtheon.
                
        Linux:  1)Mozilla FireFox.
                
 ==========================================================================================================================*/
var xmlhttp;
var HideProgressBarAnimation;/*Sometimes progressbar Needs To Be Still Shown Even After Response Arrives From Server.
Like When Page Is To Be Redirected To Another page From Client Side Upon Arrival Of Response.
Setting It To True Will Cause The Progress Bar To Be Shown Even After Arrival of Response From Server And Vice Versa.*/
var WaitingForResponse=false;
var arMessages = new Array();
/*0*/ arMessages.push("<p1> can't be left blank.");
/*1*/ arMessages.push("<p1> should be between <p2> to <p3> characters only.");
/*2*/ arMessages.push("<p1> must be alphanumeric.");
/*3*/ arMessages.push("<p1> must be strictly numeric.");
/*4*/ arMessages.push("Please enter correct Email Id.eg jatinderwalia@gmail.com.Only valid special characters are hyphen(-),underscore(_),dot(.) and atrate(@).");
/*5*/ arMessages.push("Please select something from <p1> to proceed further.");
/*6*/ arMessages.push("Please select an option from <p1> to proceed further.");
/*7*/ arMessages.push("Please supply date in DD/MM/YY format for <p1> field.");
/*8*/ arMessages.push("<p1> contains certain illegal characters.");
/*9*/ arMessages.push("<p1> must be a strictly  numeric value <p2>.");
/*10*/ arMessages.push("<p1> contains certain special characters.");
/*11*/ arMessages.push("<p1> are allowed only <p2> characters after decimal.");

var arCustomMessages=new Array()
{
    arCustomMessages.push("«1»Please Enter the Plan Name.");
    arCustomMessages.push("«2»Please re-enter Plan Name without any special character");
    arCustomMessages.push("«3»Please Enter the Description");
    arCustomMessages.push("«4»Special characters other than -,_. are not allowed in description.");
    arCustomMessages.push("«5»Activation Date cannot be blank");
    arCustomMessages.push("«6»Deactivation Date cannot be blank.");
    arCustomMessages.push("«7»Country field cannot be blank.");
    arCustomMessages.push("«8»Please select the user type");
    arCustomMessages.push("«9»Please Enter credits");
    arCustomMessages.push("«10»Please enter rates");
    arCustomMessages.push("«11»Deactivation Date cannot be blank.");
    arCustomMessages.push("«12»Rate must be a strictly numeric value or a decimal value.");
    arCustomMessages.push("«13»Please enter the name of the Alert");
    arCustomMessages.push("«14»Please select the file to be uploaded");
    arCustomMessages.push("«15»Please schedule the time for the Alert to be sent.");
    arCustomMessages.push("«16»The time can only be greater than the current time.");
    arCustomMessages.push("«17»Please enter the message text.");
    arCustomMessages.push("«18»Please select the file");
    arCustomMessages.push("«19»From date can not be left blank");
    
}


//This Function Checks The Strength Of The Password

function CheckPasswordStrength(obj)
{
    var retval=(obj.value.length>=8)?'Green':((obj.value.length>=4)&&(obj.value.length<8))?'Violet':'Red';
    return retval;
}

//This Function Sends An Asynchronous Remote Request To The Server To Client Side and Recieves The ResponseText In Return From The Server
function AsyncHit(RemoteUrl,ParamString,ShowHideProgressBar) 
    {
        //ShowProgressbar("modalPage");
        //return;
        if (window.XMLHttpRequest) 
        { // For Firefox,Mozilla, Safari & IE 7 and above etc 
            xmlhttp=new XMLHttpRequest();
        } 
        else if (window.ActiveXObject) 
        { //For IE 
            xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
        }
        if (typeof(xmlhttp)=='object') 
        {
            HideProgressBarAnimation=ShowHideProgressBar;
            xmlhttp.onreadystatechange=GetResponse;
            xmlhttp.open('POST', RemoteUrl, true);
            ShowProgressbar("modalPage");
            WaitingForResponse=true;
            xmlhttp.send(ParamString);
        }
    }
 
 /*This Function Is Activated By Asynchit Function Upon Reciept Of Response From The Server.This Function Is 
 Further Responsible For Processing The Response That Has Arrived From The Server In Response To Request Sent 
 By AsyncHit*/
 function GetResponse()
 {
   if (xmlhttp.readyState==4) 
   { 
     AllowKeyHit=true;
     if(HideProgressBarAnimation==true) HideProgressbar("modalPage");
      if (xmlhttp.status==200) 
      { 
         HandleResponse(xmlhttp.responseText);
      }
      else
      {
         HandleResponse("-1");
      }
      WaitingForResponse=false;
   }
}

/*This Functions Shows A Modal Animated ProgressBar So Long As The Web Browser Is Waiting For Response To Arrive From Server.
This Function Mainly Ensures That No Other Click Or Event On The Page Will Work Unless Response Arrives From Server..*/
function ShowProgressbar(divID)
{
    //window.onscroll = function () { document.getElementById(divID).style.top = document.body.scrollTop; };
    //document.getElementById(divID).style.display = "block";
    //document.getElementById(divID).style.top = document.body.scrollTop;
    OnDisplayModalWindow();
}

//This Progress Hides The Modal Animated Bar From User View When Response From Server Has Arrived.
function HideProgressbar(divID)
{
   // document.getElementById(divID).style.display = "none";
   OnHideModalWindow();
}

//This Function Returns A Boolean Value Indicating Whether A String Begins With The Specified Occurence Of Characters Or Not
String.prototype.startsWith = function(str) {return (this.match("^"+str)==str)}
//This Function Returns A Boolean Value Indicating Whether A String Ends With The Specified Occurence Of Characters Or Not
String.prototype.endsWith = function(str)   {return (this.match(str+"$")==str)}
//This Function Removes All Leading And Trailing White Spaces From A String.
function Alltrim(str)
    {
        while(str.startsWith(' ')) str=str.substr(1,str.length);
        while(str.endsWith(' ')) str=str.substr(0,str.length-1);
        return str;
    }
function TrimString(MainString,TrimString)
    {
       
        while(MainString.startsWith(TrimString)) MainString=MainString.substr(1,MainString.length);
        while(MainString.endsWith(TrimString)) MainString=MainString.substr(0,MainString.length-1);
        return MainString;
    }

 //This Function Is Responsible For Displaying Various Messages,Plain As Well As Parameterized Messages Throughout The Application.
 function Flash(RawMessage,params,CustomMessageIdIndex)
    {
        var i, j;
        var ReplaceValue = "";
        var Found=false;
        if((CustomMessageIds!=null)&&(Alltrim(CustomMessageIds)!=""))
        {
            var Temp=CustomMessageIds.split(',');
                for(j=0;((j<arCustomMessages.length)&&(Found==false));Found=arCustomMessages[j].startsWith("«"+Temp[CustomMessageIdIndex]+"»"),j++);
                if(Found==true)
                {
                    alert(arCustomMessages[((j>0)?(j-1):j)].substr(("«"+Temp[CustomMessageIdIndex]+"»").length));
                    
                    //alert(arCustomMessages[((j>0)?(j-1):j)].replace(/"«"+Temp[CustomMessageIdIndex]+"»"/gi, ""));
                    Found=true;
                }
            if(Found==true) return arCustomMessages[i];
        }
        params=(params==null)?"":params;
        params=Alltrim(params);
        //If No Parameters Are Supplied,Then Message Will Be Displayed As It Is
        if (params.length <=0) 
        {						
            alert(RawMessage);
            return RawMessage;
        }
        //If No Parameters Are Supplied,Then Message Will Be Displayed As It Is
        
        RawMessage=RawMessage.replace(/<>/gi, "< >");
        params=params.split('<>');
        var From,To;
        var StringToReplace="";
        var ParamCount=0;
        
        while(RawMessage.indexOf("<")>=0)
        {
            From=RawMessage.indexOf('<');
            To=RawMessage.indexOf('>');
            StringToReplace=RawMessage.substring(From,++To);
            RawMessage=RawMessage.replace(StringToReplace,params[ParamCount]);
            ParamCount++;
        }
        alert(RawMessage);
        return RawMessage;
    }
    
    //This Function Is Responsible For Displaying Various Messages,Plain As Well As Parameterized Messages Throughout The Application.
 function ShowFlash(RawMessage,params,id,CustomMessageIdIndex)
    {
        var i, j;
        var ReplaceValue = "";
        params=(params==null)?"":params;
        params=Alltrim(params);
        
        //If No Parameters Are Supplied,Then Message Will Be Displayed As It Is
        if (params.length <=0) 
        {						
            if(document.getElementById(id))
                {
                    document.getElementById(id).innerHTML=RawMessage;
                    document.getElementById(id).style.display="";
                    document.getElementById(id).style.visibility="visible";
                }
            else
                {
                    alert(RawMessage);
                }
            return RawMessage;
        }
        //If No Parameters Are Supplied,Then Message Will Be Displayed As It Is
        
        RawMessage=RawMessage.replace(/<>/gi, "< >");
        params=params.split('<>');
        var From,To;
        var StringToReplace="";
        var ParamCount=0;
        
        while(RawMessage.indexOf("<")>=0)
        {
            From=RawMessage.indexOf('<');
            To=RawMessage.indexOf('>');
            StringToReplace=RawMessage.substring(From,++To);
            RawMessage=RawMessage.replace(StringToReplace,params[ParamCount]);
            ParamCount++;
        }
        
        if(document.getElementById(id))
                {
                    document.getElementById(id).innerHTML=RawMessage;
                    document.getElementById(id).style.display="";
                    document.getElementById(id).style.visibility="visible";
                }
            else
                {
                    alert(RawMessage);
                }
        //alert(RawMessage);
        
        return RawMessage;
    }
    
    
    //«   »This Function Is Responsible For Displaying Various Messages,Plain As Well As Parameterized Messages Throughout The Application.
 function ShowFlash1(RawMessage,params,id)
    {
        var i, j;
        var ReplaceValue = "";
        params=(params==null)?"":params;
        params=Alltrim(params);
        
        //If No Parameters Are Supplied,Then Message Will Be Displayed As It Is
        if (params.length <=0) 
        {						
            if(document.getElementById(id))
                {
                    document.getElementById(id).innerHTML=RawMessage;
                    document.getElementById(id).style.display="";
                    document.getElementById(id).style.visibility="visible";
                }
            else
                {
                    alert(RawMessage);
                }
            return RawMessage;
        }
        //If No Parameters Are Supplied,Then Message Will Be Displayed As It Is
        RawMessage=RawMessage.replace(/</gi, "«");
        RawMessage=RawMessage.replace(/>/gi, "»");
        RawMessage=RawMessage.replace(/«»/gi, "« »");
        params=params.split('«»');
        var From,To;
        var StringToReplace="";
        var ParamCount=0;
        
        
        while(RawMessage.indexOf("«")>=0)
        {
            From=RawMessage.indexOf('«');
            To=RawMessage.indexOf('»');
            StringToReplace=RawMessage.substring(From,++To);
            RawMessage=RawMessage.replace(StringToReplace,params[ParamCount]);
            ParamCount++;
        }
        
        if(document.getElementById(id))
                {
                    document.getElementById(id).innerHTML=RawMessage;
                    document.getElementById(id).style.display="";
                    document.getElementById(id).style.visibility="visible";
                }
            else
                {
                    alert(RawMessage);
                }
        //alert(RawMessage);
        
        return RawMessage;
    }
    
    
//This Function Generates A Random String Of Characters,Let's Say Something Like Password from Client Side When Required
function GetRandomString(MaxLen)
    {
        var RetStr;
        var Flag = false;
	var charFlg=false;
        var randomnumber;
        RetStr="";
        for (i = 0; i < MaxLen; i++)
        {
         randomnumber=GetRandomNumber(0,2); 
         switch (randomnumber)
            {
                case 0://A-Z:65-90
                    RetStr = RetStr + String.fromCharCode(GetRandomNumber(65,90));
                    break;
                case 1://0-9
                    RetStr = RetStr + String.fromCharCode(GetRandomNumber(48,57));
                    Flag = true;
                    break;
                default:// a-z
                    RetStr = RetStr + String.fromCharCode(GetRandomNumber(97,122));
                    break;
            }
        }
        //Just To Make Sure That There Is Atleast One Numeric Char Present If It Has Not Been Randomly Inserted.
        if (Flag == false)
        {
            RetStr = RetStr.substring(0, RetStr.length - 1) + String.fromCharCode(GetRandomNumber(48,57))
        }
	if (charFlg == false)
        {
            RetStr = RetStr.substring(0, RetStr.length - 1) + String.fromCharCode(GetRandomNumber(48,57))
        }
        return RetStr;
    }
    
    function GetRandomStringVcode(MaxLen)
    {
        var RetStr;
        var Flag = false;
	var charFlg=false;
        var randomnumber;
        RetStr="";
        for (i = 0; i < MaxLen; i++)
        {
         randomnumber=GetRandomNumber(0,2); 
         switch (randomnumber)
            {
                case 0://A-Z:65-90
                    RetStr = RetStr + String.fromCharCode(GetRandomNumber(65,90));
                    break;
                case 1://0-9
                    RetStr = RetStr + String.fromCharCode(GetRandomNumber(48,57));
                    Flag = true;
                    break;
                default:// A-Z
                    RetStr = RetStr + String.fromCharCode(GetRandomNumber(65,90));
                    break;
            }
        }
        //Just To Make Sure That There Is Atleast One Numeric Char Present If It Has Not Been Randomly Inserted.
        if (Flag == false)
        {
            RetStr = RetStr.substring(0, RetStr.length - 1) + String.fromCharCode(GetRandomNumber(48,57))
        }
	if (charFlg == false)
        {
            RetStr = RetStr.substring(0, RetStr.length - 1) + String.fromCharCode(GetRandomNumber(48,57))
        }
        return RetStr;
    }
//This Function Generates A random Numbner Between Two Gicven Numbers
function GetRandomNumber(From,To,floatval)
{
  var randVal = From+(Math.random()*(To-From));
  return typeof floatVal=='undefined'?Math.round(randVal):randVal.toFixed(floatVal);
  
}

/*This Function Scans An Entire Form,Creates A List Of Parameters(For remote Hits) Automatically Based On TAGIDS Supplied To This Function As Parameters
    SPECIMEN:
    1)GetAllControlValues(document.form1,'tagid1,tagid2,tagid3','I') Will Return Values Of The Controls Of Matching Tagids.
    2)GetAllControlValues(document.form1,'tagid1,tagid2,tagid3','X') Will Return Values Of The Controls Of Tagids EXCLUDING The TAGIDS Supplied As Parameters.
    NOTE:
    1)Specify An Attribute By The Name tagid(all in lowercase) For Any Control Whose Value Needs To Be Evaluated From This Function.All tagids Must Be Unique On A WebPage OtherWise This Function Will Either Crash Or Produce Incorrect Results.
    2)Third Parameter Can Be Either "I" Or "X" Only."I" or "i" Means "INCLUDE" and "X" OR "x" Means EXclude.
*/
 function GetAllControlValues(FormObject,TagIds,IncludeOrExclude)
     {
        var ParamList = new Array();
        var ParamListValues=new Array();
        var TagIdentity=null;
        TagIds=(TagIds!=null)?Alltrim(TagIds).toUpperCase().split(','):",".split(',');
        IncludeOrExclude=((IncludeOrExclude==null)||(Alltrim(IncludeOrExclude)=="")) ?"I":IncludeOrExclude.toUpperCase();
        var Found;
        var InnerSplitter="",OuterSplitter="";;
        for(i=0;(i<FormObject.elements.length); i++)
            { 
                var RequiredAttributes=GetRequiredAttributes(FormObject.elements[i]);
                TagIdentity=(RequiredAttributes[0]!=null)?RequiredAttributes[0].toUpperCase():null;
                if(TagIdentity==null) continue;
                Found=false;
                for(j=0;((j<TagIds.length)&&(Found==false));Found=(TagIds[j]==TagIdentity), j++);
                if(((Found==true)&&(IncludeOrExclude=="I"))||((Found==false)&&(IncludeOrExclude=="X")))
                {
                    switch(FormObject.elements[i].type)
                        {
                            case "text":
                            case "textarea":
                            case "password":
                                ParamList.push(TagIdentity);
                                ParamListValues.push(FormObject.elements[i].value);
                                break;
                            case "checkbox":
                                 var ss=FormObject.elements[i].name;
                                 var inputs=document.getElementsByName(FormObject.elements[i].name);
                                 var inp;
                                 var SelectedItems="";
                                 for(k=0;k<inputs.length; SelectedItems=(inputs[k].checked==true)?SelectedItems+','+inputs[k].value:SelectedItems,k++);
                                 SelectedItems=SelectedItems.startsWith(",")?SelectedItems.substr(1,SelectedItems.length-1):SelectedItems;
                                 //checkbox whose elements have been scanned once must not be scanned again,hence remove that checkbox's tagid from the tagIds array
                                 var Temp="";
                                 for(k=0;k<TagIds.length;k++)
                                 {
                                    if(TagIds[k]!=TagIdentity)
                                    {
                                        Temp=Temp+","+TagIds[k];
                                    }
                                 }
                                 Temp=Temp.substr(1,Temp.length-1);
                                 TagIds=Temp.split(',');
                                 //checkbox whose elements have been scanned once must not be scanned again,hence remove that checkbox's tagid from the tagIds array
                                 ParamList.push(FormObject.elements[i].name.toUpperCase());
                                 ParamListValues.push(SelectedItems);
                                 break;
                            case "select":
                            case "select-one":
                                ParamList.push(TagIdentity);
                                ParamListValues.push((((FormObject.elements[i][FormObject.elements[i].selectedIndex].value==null)||(Alltrim(FormObject.elements[i][FormObject.elements[i].selectedIndex].value)==""))?FormObject.elements[i][FormObject.elements[i].selectedIndex].text:FormObject.elements[i][FormObject.elements[i].selectedIndex].value));
                                break;
                           case "select-multiple":
                                ParamList.push(TagIdentity);
                                var arSelected = new Array();
                                var objMultSelect=FormObject.elements[i];
                                
                                for(j=0;j<objMultSelect.length;j++)
                                {
                                    if(objMultSelect[j].selected)
                                    {
                                        arSelected.push((objMultSelect[j].value==null||Alltrim(objMultSelect[j].value)=="")?objMultSelect[j].text:objMultSelect[j].value);
                                    }
                                }
                                ParamListValues.push(arSelected.toString());
                                break;
                           case "radio":
                                 var ss=FormObject.elements[i].name;
                                 var inputs=document.getElementsByName(FormObject.elements[i].name);
                                 var inp;
                                 var SelectedRadioItem="";
                                 for(k=0;((k<inputs.length)&&(SelectedRadioItem==""));SelectedRadioItem=(inputs[k].checked==true)?inputs[k].value:"",k++);
                                 var Temp="";
                                 for(k=0;k<TagIds.length;k++)
                                 {
                                    if(TagIds[k]!=TagIdentity)
                                    {
                                        Temp=Temp+","+TagIds[k];
                                    }
                                 }
                                 Temp=Temp.substr(1,Temp.length-1);
                                 TagIds=Temp.split(',');
                                 
                                 ParamList.push(FormObject.elements[i].name.toUpperCase());
                                 ParamListValues.push(SelectedRadioItem);
                                break;
                           default:
                                //alert(FormObject.elements[i].type);
                                break;
                        }
                }
            }
            InnerSplitter=GetRandomString(4).toUpperCase();
            for(i=0;i<ParamList.length;i++)
            {
                if((ParamList[i].toUpperCase().indexOf(InnerSplitter)>0)||(ParamListValues[i].toUpperCase().indexOf(InnerSplitter)>0))
                {
                    i=-1;
                    InnerSplitter=GetRandomString(4).toUpperCase();
                }
            }
            for(i=0;i<ParamList.length;i++)
            {
                ParamList[i]=ParamList[i]+InnerSplitter+ParamListValues[i];
            }
            OuterSplitter=GetRandomString(4).toUpperCase();
            for(i=0;i<ParamList.length;i++)
            {
                if(ParamList[i].toUpperCase().indexOf(OuterSplitter)>0)
                {
                    i=-1;
                    OuterSplitter=GetRandomString(4).toUpperCase();
                }
            }
            var RetStr="";
            for(i=0;i<ParamList.length;i++)
            {
                RetStr=RetStr+OuterSplitter+ParamList[i];
            } 
            RetStr=RetStr.substr(4,RetStr.length-1);
            RetStr=OuterSplitter+InnerSplitter+RetStr;
            ParamList=null;
            return(RetStr);
     }
     
    
   /*This Function Scans An Entire Form,Checks various controls by their respective "TAGID" tag for deviations against VALIDATIONS(Separated by commas) provided in the "VALIDATIONS" tag of a control.
   This Function Performs Basic Checks Of Checking The Specified Control Against:-
   1)Blank or Empty value.
   2)Strictly Numeric Value.
   3)Strictly Alphanumeric Value.
   4)Length Of a Value To Be Between Specified Minimum And Maximum Limits.For Example Password Length Must Be Between 8 to 14 Characters Only.
   5)Email Validation.
   6)Makes Sure That Atleast One Radio Button From A Group Of Radio Buttons Is Selected.
   7)Makes Sure That Atleast One Check Box From A Group Of CheckBoxes Is Atleast Selected.
    SPECIMEN:
    ValidateGenericChecks(document.form1,'email,rd1,cu') Where First Element Is FormObject(Whose Controls Are Desired To Be Validated) And Second Parameter Is The TAGIDS(Separated By Commas) Of The Controls Whose Validations(Specified In The VALIDATIONS Tag Of The Control Separated By Commas) Need To Be Checked.
*/
   var CustomMessageIds=null;
   function ValidateGenericChecks(FormObject,TagIds,DisplayId)
     {
       //alert(CustomMessageIds);
       //alert(CustomMessageIds==null);
        TagIds=(TagIds!=null)?Alltrim(TagIds).toUpperCase().split(','):",".split(',');
        var Found;
        var ErrorOccured=false;
        var Checks;
        var Value="";
        var DisplayName=null;
        var TagIdentity=null;
        var ControlValidations="";
        
        for(i=0; ((i<FormObject.elements.length)&&(ErrorOccured==false)); i++)
            {
                TagIdentity=null;
                ControlValidations=null;
                DisplayName="";
                CustomMessageIds=null;
                var RequiredAttributes=GetRequiredAttributes(FormObject.elements[i]);
                TagIdentity=(RequiredAttributes[0]!=null)?RequiredAttributes[0].toUpperCase():null;
                ControlValidations=(RequiredAttributes[1]!=null)?RequiredAttributes[1].toUpperCase():null;
                DisplayName=(RequiredAttributes[2]!=null)?RequiredAttributes[2]:"";
                CustomMessageIds=(RequiredAttributes[4]!=null)?RequiredAttributes[4]:"";
                //alert(CustomMessageIds);
                if((TagIdentity==null)||(ControlValidations==null)) continue;
                Found=false;
                for(j=0;((j<TagIds.length)&&(Found==false));Found=(TagIds[j]==TagIdentity), j++);
                if(Found==false) continue;
                Checks=ControlValidations.toUpperCase();
                Found=false;
                var CheckName="";
                Checks=Checks.split(',');
                for(c=0;((c<Checks.length)&&(ErrorOccured==false));c++)
                       {
                            
                            CheckName=(Checks[c].length>1)?(Checks[c].toUpperCase()=="DM")?"DM":(Checks[c].toUpperCase()=="DO")?"DO":Checks[c].substr(0,1):Checks[c];
                            //CheckName=Checks[c];
                           switch(FormObject.elements[i].type)
                           {
                                case "file":
                                case "text":
                                case "textarea":
                                case "password":
                                Value=Alltrim(FormObject.elements[i].value);
                                     switch(CheckName)
                                        { //Switch(Checname) Begins Here
                                             case "A"://AlphaNumeric.
                                                var HasChar=false;
                                                var HasNumber=false;
                                                for(a=0;((a<Value.length)&&((HasNumber==false)||(HasChar==false)));HasChar=(HasChar==false)?(((Value.charCodeAt(a)>=65)&&(Value.charCodeAt(a)<=90))||((Value.charCodeAt(a)>=97)&&(Value.charCodeAt(a)<=122)))?true:false:HasChar,HasNumber=(HasNumber==false)?((Value.charCodeAt(a)>=48)&&(Value.charCodeAt(a)<=57))? true:false:HasNumber, a++);
                                                ErrorOccured=((HasNumber==false)||(HasChar==false));
                                                if(ErrorOccured==true)
                                                {
                                                    if(document.getElementById(DisplayId))
                                                    {
                                                        ShowFlash(arMessages[2],DisplayName,DisplayId,c);
                                                    }
                                                    else
                                                    {
                                                        Flash(arMessages[2],DisplayName,c);
                                                    }
                                                    
                                                    if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                                }
                                                break;
                                             case "B"://Blank.
                                                ErrorOccured=(Value=="")?true:false;
                                                if(ErrorOccured==true)
                                                {
                                                    if(document.getElementById(DisplayId))
                                                    {
                                                        ShowFlash(arMessages[0],DisplayName,DisplayId,c);
                                                    }
                                                    else
                                                    {
                                                        Flash(arMessages[0],DisplayName,c);
                                                    }
                                                    
                                                    if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                                }
                                                break;
                                             case "DO"://Character Check: All Chars Except 0-9 ,A-Z ,a-z ,"-","-" Are Prohibited.
                                                var CharCount;
                                                var AscVal;
                                                for(CharCount=0;((CharCount<Value.length)&&(ErrorOccured==false));CharCount++)
                                                {
                                                    AscVal=Value.charCodeAt(CharCount);
                                                    if((AscVal==45)||(AscVal==95)||(AscVal==32)) continue;
                                                    ErrorOccured=!(((AscVal>=48)&&(AscVal<=57))||((AscVal>=65)&&(AscVal<=90))||((AscVal>=97)&&(AscVal<=122)))
                                                    if(ErrorOccured==true)
                                                    {
                                                        if(document.getElementById(DisplayId))
                                                        {
                                                            ShowFlash(arMessages[8],DisplayName,DisplayId,c);
                                                        }
                                                        else
                                                        {
                                                            Flash(arMessages[8],DisplayName,c);
                                                        }
                                                        //FormObject.elements[i].focus();
                                                        if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                                    }
                                                }
                                                break;
                                             case "C"://Character Check: All Chars Except 0-9 ,A-Z ,a-z ,"-","-","." Are Prohibited.
                                                var CharCount;
                                                var AscVal;
                                                for(CharCount=0;((CharCount<Value.length)&&(ErrorOccured==false));CharCount++)
                                                {
                                                    AscVal=Value.charCodeAt(CharCount);
                                                    if((AscVal==45)||(AscVal==46)||(AscVal==95)) continue;
                                                    ErrorOccured=!(((AscVal>=48)&&(AscVal<=57))||((AscVal>=65)&&(AscVal<=90))||((AscVal>=97)&&(AscVal<=122)))
                                                    if(ErrorOccured==true)
                                                    {
                                                        if(document.getElementById(DisplayId))
                                                        {
                                                            ShowFlash(arMessages[8],DisplayName,DisplayId,c);
                                                        }
                                                        else
                                                        {
                                                            Flash(arMessages[8],DisplayName,c);
                                                        }
                                                        if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                                        
                                                    }
                                                }
                                                break;
                                               //This IS Same As "C" Check Except That This Allows White Space
                                               case "S"://Character Check: All Chars Except 0-9 ,A-Z ,a-z ,"-","_","." And White Space Are Prohibited.
                                                var CharCount;
                                                var AscVal;
                                                for(CharCount=0;((CharCount<Value.length)&&(ErrorOccured==false));CharCount++)
                                                {
                                                    AscVal=Value.charCodeAt(CharCount);
                                                    if((AscVal==45)||(AscVal==46)||(AscVal==95)||(AscVal==32)) continue;
                                                    ErrorOccured=!(((AscVal>=48)&&(AscVal<=57))||((AscVal>=65)&&(AscVal<=90))||((AscVal>=97)&&(AscVal<=122)))
                                                    if(ErrorOccured==true)
                                                    {
                                                        if(document.getElementById(DisplayId))
                                                        {
                                                            ShowFlash(arMessages[8],DisplayName,DisplayId,c);
                                                        }
                                                        else
                                                        {
                                                            Flash(arMessages[8],DisplayName,c);
                                                        }
                                                        //FormObject.elements[i].focus();
                                                        if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                                    }
                                                }
                                                //ErrorOccured=CheckSpecialChars(FormObject,DisplayName,DisplayId);
                                                break;
                                                
                                                 //This IS Same As "C" Check Except That This Allows White Space
                                               
                                               case "$"://Character Check: All Chars Except 0-9 ,A-Z ,a-z Are Prohibited.
                                                ErrorOccured=CheckSpecialChars(FormObject,DisplayName,DisplayId,Value,ControlValidations.toUpperCase(),c);
                                                break;
                                                
                                               case "@":
                                               ErrorOccured=CheckSpecialChars(FormObject,DisplayName,DisplayId,Value,ControlValidations.toUpperCase(),c);
                                               break;
                                               
                                                
                                             case "D"://Date Matching DD/MM/YY Format
                                               ErrorOccured=(Value.search(/^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/(\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/(\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/(\d{2}))|(29\/02\/((0[48]|[2468][048]|[13579][26])|(00))))$/)==0)?false:true;
                                               if(ErrorOccured==true)
                                                    {
                                                       if(document.getElementById(DisplayId))
                                                        {
                                                            ShowFlash(arMessages[7],DisplayName,DisplayId,c);
                                                        }
                                                        else
                                                        {
                                                            Flash(arMessages[7],DisplayName,c);
                                                        }
                                                        
                                                        if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                                    }
                                               break;
                                               
                                              case "DM":
                                                
                                                ErrorOccured=CheckSpecialChars(FormObject,DisplayName,DisplayId,Value,"@-_.Y",c);
                                                
                                                if(ErrorOccured==false)
                                                    {
                                                        if(Value.startsWith("."))
                                                        {
                                                            ErrorOccured=true;
                                                            alert("Domain name can't begin with an \".\"");
                                                        }
                                                        else if(Value.endsWith("."))
                                                        {
                                                            ErrorOccured=true;
                                                            alert("Domain name can't end with an \".\"");
                                                        }
                                                        else if(Value.indexOf("..")>=0)
                                                        {
                                                            ErrorOccured=true;
                                                            alert("\""+".."+"\"" +" is not allowed in a domain name.");
                                                            
                                                        }
                                                        if(!ErrorOccured)
                                                        {
                                                            var Temp=Value.split('.');
                                                            
                                                            if(Temp.length<=1)
                                                            {
                                                                ErrorOccured=true;
                                                                alert("Please specify Top level domain like .com,.org,.in etc");
                                                            }
                                                            else if(Alltrim(Temp[0]).length<=0)
                                                            {
                                                                ErrorOccured=true;
                                                                alert("Domain name can't be left blank.");
                                                            }
                                                            else if(Alltrim(Temp[0]).length>64)
                                                            {
                                                                ErrorOccured=true;
                                                                alert("Domain name can't be more than 64 characters long.");
                                                            }
                                                            
                                                            else if(Temp[0].startsWith("-"))
                                                            {
                                                                ErrorOccured=true;
                                                                alert("Domain name can't begin with an \"-\"");
                                                            }
                                                            else if(Temp[0].endsWith("-"))
                                                            {
                                                                ErrorOccured=true;
                                                                alert("Domain name can't end with an \"-\"");
                                                            }
                                                            else if(Temp[0].indexOf("--")>=0)
                                                            {
                                                                ErrorOccured=true;
                                                                alert("More than a single hyphen \"-\" together ie \"--\" not allowed.");
                                                                
                                                            }
							                            }
//                                                        return ErrorOccured;
//                                                        if(ErrorOccured==false)
//                                                           {
//                                                            var TLD = new Array(
//                                                                                'com','net','org','biz','coop','info','museum','name',
//                                                                                'pro','edu','gov','int','mil','ac','ad','ae','af','ag',
//                                                                                'ai','al','am','an','ao','aq','ar','as','at','au','aw',
//                                                                                'az','ba','bb','bd','be','bf','bg','bh','bi','bj','bm',
//                                                                                'bn','bo','br','bs','bt','bv','bw','by','bz','ca','cc',
//                                                                                'cd','cf','cg','ch','ci','ck','cl','cm','cn','co','cr',
//                                                                                'cu','cv','cx','cy','cz','de','dj','dk','dm','do','dz',
//                                                                                'ec','ee','eg','eh','er','es','et','fi','fj','fk','fm',
//                                                                                'fo','fr','ga','gd','ge','gf','gg','gh','gi','gl','gm',
//                                                                                'gn','gp','gq','gr','gs','gt','gu','gv','gy','hk','hm',
//                                                                                'hn','hr','ht','hu','id','ie','il','im','in','io','iq',
//                                                                                'ir','is','it','je','jm','jo','jp','ke','kg','kh','ki',
//                                                                                'km','kn','kp','kr','kw','ky','kz','la','lb','lc','li',
//                                                                                'lk','lr','ls','lt','lu','lv','ly','ma','mc','md','mg',
//                                                                                'mh','mk','ml','mm','mn','mo','mp','mq','mr','ms','mt',
//                                                                                'mu','mv','mw','mx','my','mz','na','nc','ne','nf','ng',
//                                                                                'ni','nl','no','np','nr','nu','nz','om','pa','pe','pf',
//                                                                                'pg','ph','pk','pl','pm','pn','pr','ps','pt','pw','py',
//                                                                                'qa','re','ro','rw','ru','sa','sb','sc','sd','se','sg',
//                                                                                'sh','si','sj','sk','sl','sm','sn','so','sr','st','sv',
//                                                                                'sy','sz','tc','td','tf','tg','th','tj','tk','tm','tn',
//                                                                                'to','tp','tr','tt','tv','tw','tz','ua','ug','uk','um',
//                                                                                'us','uy','uz','va','vc','ve','vg','vi','vn','vu','ws',
//                                                                                'wf','ye','yt','yu','za','zm','zw','nic'
//                                                                                   );
//                                                            var TLDCount=0;
//                                                            var TLDFound=true;
//                                                            var TempCount=1;
//                                                            
//                                                            for(TempCount=1;((TempCount<Temp.length)&&(TLDFound==true));TempCount++)
//                                                                {
//                                                                    TLDFound=false;
//                                                                    for(TLDCount=0;((TLDCount<TLD.length)&&(TLDFound==false));TLDCount++)
//                                                                    {
//                                                                        TLDFound=(Temp[TempCount]==TLD[TLDCount])?true:false;
//                                                                    }
//                                                                    if(TLDFound==false)
//                                                                    {
//                                                                        ErrorOccured=true;
//                                                                        if(Alltrim(Temp[TempCount])=="")
//                                                                        {
//                                                                            alert("\""+".."+"\"" +" is not allowed in a domain name.");
//                                                                        }
//                                                                        else
//                                                                        {
//                                                                            alert("\""+Temp[TempCount]+"\""+" is not part of the international top level domain specification.");
//                                                                        }
//                                                                    }
//                                                                }
//                                                            if(ErrorOccured==false)
//                                                            {
//                                                                 var TLDCount1;
//                                                                 for(TLDCount=0;((TLDCount<Temp.length)&&(ErrorOccured==false));TLDCount++)
//                                                                 {
//                                                                    for(TLDCount1=TLDCount+1;((TLDCount1<Temp.length)&&(ErrorOccured==false));TLDCount1++)
//                                                                    {
//                                                                        if(Temp[TLDCount].toUpperCase()==Temp[TLDCount1].toUpperCase())
//                                                                        {
//                                                                            ErrorOccured=true;
//                                                                            alert("Top level domain specification :"+"\""+Temp[TLDCount] +"\""+" after position :"+TLDCount+" is occuring again on position:"+TLDCount1+".");
//                                                                            
//                                                                        }
//                                                                    }
//                                                                 }
//                                                            }
//                                                        }
                                                    }
                                                    if(ErrorOccured==true) 
                                                    {
                                                        if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                                    }
                                                break;
                                           case "L"://Length Between Specified Limits.
                                                var Lengths=Checks[c].substr(1,Checks[c].length).split('-');
                                                ErrorOccured=((parseInt(Value.length,10)>=parseInt(Lengths[0],10))&&(parseInt(Value.length,10)<=parseInt(Lengths[1],10)))?false:true;
                                                var MessageParameters=DisplayName+"<>"+Lengths[0]+"<>"+Lengths[1];
                                                if(ErrorOccured==true)
                                                {
                                                     if(document.getElementById(DisplayId))
                                                        {
                                                            ShowFlash(arMessages[1],MessageParameters,DisplayId,c);
                                                        }
                                                        else
                                                        {
                                                            Flash(arMessages[1],MessageParameters,c);
                                                        }
                                                    
                                                    //FormObject.elements[i].focus();
                                                    if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                                }
                                                break;
                                           case "M"://Mail Syntax Check.For Email Id Fields.
                                           ErrorOccured=(Value.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) == -1)?true:false;
                                           if(ErrorOccured==true)
                                                {
                                                    if(document.getElementById(DisplayId))
                                                        {
                                                            ShowFlash(arMessages[4],DisplayName,DisplayId,c);
                                                        }
                                                        else
                                                        {
                                                            Flash(arMessages[4],DisplayName,c);
                                                        }
                                                    
                                                    if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                                }
                                                break;
                                           case "N"://Numeric.
                                                //For Decimal Numbers(Only One Decimal(Or Dot) Is Allowed)

                                                //ErrorOccured=((Checks[c]!="NF")&&(Value.indexOf(".")>=0))?true:isNaN(Value)?true:false;
						ErrorOccured=((Checks[c]!="NE")&&(Checks[c]!="NF")&&(Value.indexOf(".")>=0))?true:isNaN(Value)?true:false;
                                                if(ErrorOccured==true)
                                                {
                                                   if(document.getElementById(DisplayId))
                                                        {
                                                            ShowFlash(arMessages[3],DisplayName,DisplayId,c);
                                                        }
                                                        else
                                                        {
                                                            Flash(arMessages[3],DisplayName,c);
                                                        }
                                                    if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                                }
                                                if((ErrorOccured==false)&&(Checks[c].length>0))
                                                {
                                                   switch (Checks[c])
                                                   {
                                                        case "N+"://Strictly Positive Value
                                                              if(parseInt(Value,10)<0)
                                                                {
                                                                    ErrorOccured=true;
                                                                    if(document.getElementById(DisplayId))
                                                                        {
                                                                            ShowFlash(arMessages[9],DisplayName+"<>greater than or atleast equal to 0",c);
                                                                        }
                                                                        else
                                                                        {
                                                                            Flash(arMessages[9],DisplayName+"<>greater than or atleast equal to 0",c);
                                                                        }
                                                                    //FormObject.elements[i].focus();
                                                                    if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                                                }
                                                             break;
                                                             
                                                       case "N-"://Strictly Negative Value
                                                               if(parseInt(Value,10)>=0)
                                                                {
                                                                    ErrorOccured=true;
                                                                    if(document.getElementById(DisplayId))
                                                                        {
                                                                            ShowFlash(arMessages[9],DisplayName+"<>less than 0",c);
                                                                        }
                                                                        else
                                                                        {
                                                                            Flash(arMessages[9],DisplayName+"<>less than 0",c);
                                                                        }
                                                                    if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                                                }
                                                             break;
                                                             
                                                      case "NF"://Numeric Float
                                                       Value=Value.replace(".","");
                                                       ErrorOccured=(Value.indexOf(".")>=0)?true:isNaN(Value)?true:false;
                                                       if(ErrorOccured)
                                                       {
                                                        if(document.getElementById(DisplayId))
                                                            {
                                                                ShowFlash(arMessages[9],DisplayName+"<>less than 0",c);
                                                            }
                                                            else
                                                            {
                                                                Flash(arMessages[9],DisplayName+"<>less than 0",c);
                                                            }
                                                        if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                                       }
                                                      
                                                       break;
						      case "NE"://Numeric Float allowed char after decimal
                                                       var val=Value.split(".");
                                                       if(val.length>1)
                                                       {
                                                           ErrorOccured=(val[1].length>2)?true:false;
                                                           if(ErrorOccured)
                                                           {
                                                            if(document.getElementById(DisplayId))
                                                                {
                                                                    ShowFlash(arMessages[11],DisplayName+"<>2",c);
                                                                }
                                                                else
                                                                {
                                                                    Flash(arMessages[11],DisplayName+"<>2",c);
                                                                }
                                                            if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                                           }
                                                       }
                                                       else
                                                       {
                                                            ErrorOccured=false;
                                                       }
                                                       break;
                                                    }
                                                }
                                                break;
                                        }//Switch(Checname) Ends Here
                                break;
                               case "checkbox":
                               //Makes Sure That Atleast One Checkbox From A Control Array Of Check Boxes Is Checked.
                               var ss=FormObject.elements[i].name;
                               var inputs=document.getElementsByName(FormObject.elements[i].name);
                               var inp;
                               var AtleastOneChecked=false;
                               for(k=0;(k<inputs.length)&&(AtleastOneChecked==false);AtleastOneChecked=inputs[k].checked,k++);
                               ErrorOccured=!AtleastOneChecked;
                               if(ErrorOccured==true)
                                {
                                    if(document.getElementById(DisplayId))
                                                    {
                                                        ShowFlash(arMessages[5],DisplayName,DisplayId,c);
                                                    }
                                                    else
                                                    {
                                                        Flash(arMessages[5],DisplayName,c);
                                                    }
                                    
                                    if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                }
                                break;
                                case "radio":
                                //Makes Sure That Some Radio Option Is Selected.
                                 var ss=FormObject.elements[i].name;
                                 var inputs=document.getElementsByName(FormObject.elements[i].name);
                                 var AtleastOneChecked=false;
                                 for(k=0;((k<inputs.length)&&(AtleastOneChecked==false));AtleastOneChecked=inputs[k].checked,k++);
                                 ErrorOccured=!AtleastOneChecked;
                                 if(ErrorOccured==true)
                                    {
                                        if(document.getElementById(DisplayId))
                                            {
                                                ShowFlash(arMessages[6],DisplayName,DisplayId,c);
                                            }
                                            else
                                            {
                                                Flash(arMessages[6],DisplayName,c);
                                            }
                                       
                                        if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                    }
                                 break;
                                 
                                case "select-multiple":
                                //Makes Sure That Atleast Something From  Multiple List Box Is Selected.
                                    var objMultiSelect=FormObject.elements[i];
                                    for(j=0,ErrorOccured=true;((j<objMultiSelect.length)&&(ErrorOccured==true));ErrorOccured=!(objMultiSelect[j].selected),j++);
                                    if(ErrorOccured) ShowFlash(arMessages[6],DisplayName,DisplayId,c);
                                
                                break;
                                 
                                case "select":
                                case "select-one":
                                
                                //Makes Sure That Atleast Something From Combobox Box Is Selected.
                                ErrorOccured=(FormObject.elements[i].selectedIndex<=0)?true:false;
                                if(ErrorOccured==true)
                                {
                                    if(document.getElementById(DisplayId))
                                        {
                                            ShowFlash(arMessages[6],DisplayName,DisplayId,c);
                                        }
                                        else
                                        {
                                            Flash(arMessages[6],DisplayName,c);
                                        }
                                    
                                    if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
                                }
                                break;
                           }
                      }
              }
            return(ErrorOccured);
     }
     
     function CheckSpecialChars(FormObject,DisplayName,DisplayId,Value,SpecialAllowedChars,CustomMessageIdIndex)
     {
        var CharCount;
        var AscVal;
        var ErrorOccured=false;
        var Diff;
        Diff=SpecialAllowedChars.indexOf("Y")-(SpecialAllowedChars.indexOf("@")+1);
        SpecialAllowedChars=SpecialAllowedChars.substr(SpecialAllowedChars.indexOf("@")+1,Diff);
        for(CharCount=0;((CharCount<Value.length)&&(ErrorOccured==false));CharCount++)
        {
            if(SpecialAllowedChars.indexOf(Value.charAt(CharCount))>=0)  continue;
            AscVal=Value.charCodeAt(CharCount);
            ErrorOccured=!(((AscVal>=48)&&(AscVal<=57))||((AscVal>=65)&&(AscVal<=90))||((AscVal>=97)&&(AscVal<=122)))
            if(ErrorOccured==true)
            {
               if(document.getElementById(DisplayId))
                {
                    ShowFlash(arMessages[10],DisplayName,DisplayId,CustomMessageIdIndex);
                }
                else
                {
                    Flash(arMessages[10],DisplayName,CustomMessageIdIndex);
                }
                if(!((FormObject.elements[i].style.display=="none")||(FormObject.elements[i].style.visibility=="hidden")))  FormObject.elements[i].focus();
            }
        }
        return ErrorOccured;
     }
     
     
     //This Function return TagId,Validations And DisplayName In The Form Of An Array For The Control Sent As Parameter To The Calling Function For IE,NetScape,Mozilla,Safari And Opera.
     function GetRequiredAttributes(ControlObject)
     {
       var TagIdentity=null;
       var ControlValidations=null;
       var ControlValidationMessages=null;
       var DisplayName=null;
       var DefaultValue=null;
       var Retval=new Array();
       if(navigator.appName.toUpperCase() == "MICROSOFT INTERNET EXPLORER")
            {
                TagIdentity=ControlObject.tagid;
                ControlValidations=ControlObject.validations;
                DisplayName=ControlObject.dispname;
                DefaultValue=ControlObject.defval;
                ControlValidationMessages=ControlObject.msgids;
            }
            else
            {
                for(var l = 0; (l < ControlObject.attributes.length); l++) 
                { 
                    if(ControlObject.attributes.item(l).nodeName.toUpperCase()=="TAGID") 
                    {
                        TagIdentity=ControlObject.attributes.item(l).nodeValue;
                        continue;
                    }
                    if(ControlObject.attributes.item(l).nodeName.toUpperCase()=="VALIDATIONS") 
                    {
                        ControlValidations=ControlObject.attributes.item(l).nodeValue;
                        continue;
                    }
                    if(ControlObject.attributes.item(l).nodeName.toUpperCase()=="DISPNAME") 
                    {
                        DisplayName=ControlObject.attributes.item(l).nodeValue;
                        continue;
                    }
                    if(ControlObject.attributes.item(l).nodeName.toUpperCase()=="DEFVAL") 
                    {
                        DefaultValue=ControlObject.attributes.item(l).nodeValue;
                        continue;
                    }
                    if(ControlObject.attributes.item(l).nodeName.toUpperCase()=="MSGIDS") 
                    {
                        ControlValidationMessages=ControlObject.attributes.item(l).nodeValue;
                        continue;
                    }
                }
             }
             Retval.push(TagIdentity);
             Retval.push(ControlValidations);
             Retval.push(DisplayName);
             Retval.push(DefaultValue);
             Retval.push(ControlValidationMessages);
             return Retval;
      }
     
     //This Function Simply Takes The Object Of A Form As Parameter And Resets All TextBoxes Within That Form To Blank Value,Unchecks All CheckBoxes,RadioButtons,Combo Boxes And Multi Select Combo Boxes.
     function ResetAll(FormObject)
     {
        for(i=0; i<FormObject.elements.length; i++)
            {
                    switch(FormObject.elements[i].type)
                        {
                            case "text":
                            case "textarea":
                            case "password":
                                FormObject.elements[i].value="";
                                break;

                            case "checkbox":
                                 var inputs=document.getElementsByName(FormObject.elements[i].name);
                                 for(k=0;k<inputs.length;inputs[k].checked=false,k++);
                                 break;

                            case "select":
                            case "select-one":
                                FormObject.elements[i].selectedIndex=0;
                                break;

                           case "select-multiple":
                                var arSelected = new Array();
                                var objMultSelect=FormObject.elements[i];
                                for(j=0;j<objMultSelect.length;objMultSelect[j].selected=false,j++);
                                break;

                           case "radio":
                                var inputs=document.getElementsByName(FormObject.elements[i].name);
                                for(k=0;(k<inputs.length);inputs[k].checked=false,k++);
                                break;
                           default:
                                break;
                        }
                }
     }
     
     /*This Function Simply Takes The Object Of A Form As Parameter AlongWith TagIds And Include Or Exclude Option As Third Parameter .
     First Parameter Is The For Object Whose Controls Need To Be Reset,Second Parameter Contains The TAGIDS Of Those Controls Which
     Need To Be Either Need To Be "INCLUDED" (If Third Parameter Is "i" Or "I" ie "i" For INCLUDE) And "EXCLUDED"(If Third Parameter Is "x" Or "X" ie "x" For EXCLUDE)
     While Resetting The Controls Of The Form.
     SPECIMEN:
     1)SelectiveReset(document.form1,'login,pwd,email,type','i') Will Reset Only Those Controls Of Form Name:form1 whose TAGID Matches The Tagids As Specified In The Second Parameter.
     2)SelectiveReset(document.form1,'login,pwd,email,type','x') Will Reset All Controls Of Form Name:form1 whose TAGID Does Not Match The Tagids As Specified In The Second Parameter.
     
     */
     function SelectiveReset(FormObject,TagIds,IncludeOrExclude)
     {
        TagIds=(TagIds!=null)?Alltrim(TagIds).toUpperCase().split(','):",".split(',');
        IncludeOrExclude=((IncludeOrExclude==null)||(Alltrim(IncludeOrExclude)=="")) ?"I":IncludeOrExclude.toUpperCase();
        var Found;
        var TagIdentity=null;
        for(i=0; i<FormObject.elements.length; i++)
            {
                var RequiredAttributes=GetRequiredAttributes(FormObject.elements[i]);
                TagIdentity=(RequiredAttributes[0]!=null)?RequiredAttributes[0].toUpperCase():null;
                if(TagIdentity==null) continue;
                Found=false;
                for(j=0;((j<TagIds.length)&&(Found==false));Found=(TagIds[j]==TagIdentity), j++);
                if(((Found==true)&&(IncludeOrExclude=="I"))||((Found==false)&&(IncludeOrExclude=="X")))
                {
                    switch(FormObject.elements[i].type)
                        {
                            case "text":
                            case "textarea":
                            case "password":
                                FormObject.elements[i].value="";
                                break;
                            case "checkbox":
                                 var inputs=document.getElementsByName(FormObject.elements[i].name);
                                 for(k=0;k<inputs.length;inputs[k].checked=false,k++);
                                 break;
                            case "select":
                            case "select-one":
                                FormObject.elements[i].selectedIndex=0;
                                break;
                           case "select-multiple":
                                var arSelected = new Array();
                                var objMultSelect=FormObject.elements[i];
                                for(j=0;j<objMultSelect.length;objMultSelect[j].selected=false,j++);
                                break;

                           case "radio":
                                var inputs=document.getElementsByName(FormObject.elements[i].name);
                                for(k=0;(k<inputs.length);inputs[k].checked=false,k++);
                                break;
                                
                           default:
                                break;
                        }
                   }
            }
     }
     
     /*
     Same As SelectiveReset Except That This Function Resets The Desired Controls With The Value Specified By The "DEFVAL" Attribute Specified In A Tag.
     SPECIMEN:
     SetDefaults(document.form1,'email,uid,uname','i')
     
     */
     function SetDefaults(FormObject,TagIds,IncludeOrExclude)
     {
        TagIds=(TagIds!=null)?Alltrim(TagIds).toUpperCase().split(','):",".split(',');
        var TagValues="";
        var TagIdentity=null;
        var DefaultValue=null;
        IncludeOrExclude=((IncludeOrExclude==null)||(Alltrim(IncludeOrExclude)=="")) ?"I":IncludeOrExclude.toUpperCase();
        var Found;
        for(i=0; i<FormObject.elements.length; i++)
            {
                var RequiredAttributes=GetRequiredAttributes(FormObject.elements[i]);
                TagIdentity=(RequiredAttributes[0]!=null)?RequiredAttributes[0].toUpperCase():null;
                if(TagIdentity==null) continue;
                DefaultValue=(RequiredAttributes[3]!=null)?RequiredAttributes[3]:null;
                Found=false;
                for(j=0;((j<TagIds.length)&&(Found==false));Found=(TagIds[j]==TagIdentity),j++);
                if(((Found==true)&&(IncludeOrExclude=="I"))||((Found==false)&&(IncludeOrExclude=="X")))
                {
                    switch(FormObject.elements[i].type)
                        {
                            case "text":
                            case "textarea":
                            case "password":
                                FormObject.elements[i].value=(DefaultValue==null)?"":DefaultValue;
                                break;

                            case "checkbox":
                            case "radio":
                                 var inputs=document.getElementsByName(FormObject.elements[i].name);
                                 for(k=0;k<inputs.length;inputs[k].checked=false,k++);
                                 if(isNaN(DefaultValue)==false)
                                 {
                                    if((parseInt(DefaultValue,10)<inputs.length)&&(parseInt(DefaultValue,10)>=0))
                                    {
                                        inputs[DefaultValue].checked=true;
                                    }
                                    else
                                    {
                                        inputs[0].checked=true;
                                    }
                                 }
                                 break;
                            case "select":
                            case "select-one":
                                FormObject.elements[i].selectedIndex=(isNaN(DefaultValue)==false)?((parseInt(DefaultValue,10)>FormObject.elements[i].length-1)||(parseInt(DefaultValue,10)<0))?0:parseInt(DefaultValue,10):0;
                                break;
                           case "select-multiple":
                                var arSelected = new Array();
                                var objMultSelect=FormObject.elements[i];
                                for(j=0;j<objMultSelect.length;objMultSelect[j].selected=false,j++);
                                if(isNaN(DefaultValue)==false)
                                 {
                                    if((parseInt(DefaultValue,10)<inputs.length)&&(parseInt(DefaultValue,10)>=0))
                                    {
                                        objMultSelect[DefaultValue].selected=true;
                                    }
                                    else
                                    {
                                     objMultSelect[0].selected=true;
                                     }
                                 }
                                break;

                           default:
                                break;
                        }
                   }
            }
     }
     
   /*Populates The Specified Controls With Values Supplied As Parameters.
   SPECIMEN:
   1)Populate(document.form1,"uid=jatin,pwd=jatin007,desc=hello world"); where uid,pwd and desc 
   are tagids and "jatin","jatin007","hello world" are the values with which 
   these controls are to be populated.
   */
   
   function Populate(FormObject,RawValues)
     {
        var OuterDelimiter=RawValues.substr(0,4);
        RawValues=RawValues.substr(4,RawValues.length-4);
        var InnerDelimiter=RawValues.substr(0,4);
        RawValues=RawValues.substr(4,RawValues.length-4);
        RawValues=(RawValues!=null)?Alltrim(RawValues).split(OuterDelimiter):",".split(',');
        var TagIdentity=null;
        var TagIds = new Array();
        var ControlValues = new Array();
        var Temp;
        for(i=0;i<RawValues.length;i++)
        {
            Temp=RawValues[i].split(InnerDelimiter);
            TagIds.push(Temp[0]);
            ControlValues.push(Temp[1]);
        }
        var TagValues="";
        var Found;
        var j;
        for(i=0; i<FormObject.elements.length; i++)
            {
                var RequiredAttributes=GetRequiredAttributes(FormObject.elements[i]);
                TagIdentity=(RequiredAttributes[0]!=null)?RequiredAttributes[0].toUpperCase():null;
                if(TagIdentity==null) continue;
                Found=false;
                for(j=0;((j<TagIds.length)&&(Found==false));j++)
                {
                    Found=(TagIds[j].toUpperCase()==TagIdentity);
                }
                if(Found==true)
                {
                    j=j-1;
                    switch(FormObject.elements[i].type)
                        {
                            case "text":
                            case "textarea":
                            case "password":
                                
                                FormObject.elements[i].value=ControlValues[j];
                                break;

                            case "radio":
                            
                                 var inputs=document.getElementsByName(FormObject.elements[i].name);
                                 for(k=0;k<inputs.length;inputs[k].checked=false,k++)
                                 {
                                    if(Alltrim(ControlValues[j])==Alltrim(inputs[k].value))
                                    {
                                        inputs[k].checked=true;
                                        break;
                                    }
                                 }

                                 break;
                            case "checkbox":
                                var inputs=document.getElementsByName(FormObject.elements[i].name);
                                for(k=0;k<inputs.length;inputs[k].checked=false,k++);
                                var TempIndexes=ControlValues[j].split('<>');
                                for(t=0;t<TempIndexes.length;t++)
                                {
                                    for(k=0;k<inputs.length;inputs[k].checked=(Alltrim(inputs[k].value).toUpperCase()==Alltrim(TempIndexes[t]).toUpperCase())?true:inputs[k].checked,k++);
                                }
                                break;
                            case "select":
                            case "select-one":
                                var objCombo=FormObject.elements[i];
                                for(k=0;((k<objCombo.length)&&(Alltrim(objCombo[k].value).toUpperCase()!=Alltrim(ControlValues[j]).toUpperCase()));k++);
                                objCombo.selectedIndex=k;
                                break;
                           case "select-multiple":
                                var arSelected = new Array();
                                var objMultSelect=FormObject.elements[i];
                                for(j=0;j<objMultSelect.length;objMultSelect[j].selected=false,j++);
                                if(isNaN(ControlValues[j])==false)
                                 {
                                    if((parseInt(ControlValues[j],10)<inputs.length)&&(parseInt(ControlValues[j],10)>=0))
                                    {
                                        objMultSelect[ControlValues[j]].selected=true;
                                    }
                                    else
                                    {
                                     objMultSelect[0].selected=true;
                                    }
                                 }
                                break;

                           default:
                                break;
                        }
                   }
            }
     }

//Checks Whether If Enter Key Was Pressed.Required On Forms Which Need To Be Submitted Upon Press Of Enter Key
function isEnterKeyPressed(Evnt)
  {
      var CharCode = (Evnt.which) ? Evnt.which : event.keyCode;
      return( CharCode == 13);
  } 

var CurrentlyHighLightedRow=null;
var CurrentlyHighLightedRowClass=null;
/* This Function Is Called On OnFocus Event of TextBox To Clear Old Values Required By GetTypeSelect Function.
   This Function Is Important When GetTypeSelect Function Is Used On More Than One TextBoxes On Same Web Page.
*/
function InitTypeSelect()
{
    var CurrentlyHighLightedRow=null;
    var CurrentlyHighLightedRowClass=null;
}
/*This Function Highlights A Row(Of A Table) With Specified Class Or Style Upon Keyup Event On TextBox.This 
  Function Highlights The First Matching Row Of The Table Whose Value(Inner Text) Begins With The Text 
  Specified In TextBox.
*/
function GetTypeSelect(obj,StartingIndex,ControlRowPrefix,OuterRowPrefix,RowCount,HighLightedClass,HolderGridId)
{
    var RowIndex;
    var Found=false;
    var TempRow;
    var CompareValue="";
    var ControlObject;
    if(navigator.appName.toUpperCase() == "MICROSOFT INTERNET EXPLORER")
          {
            for(RowIndex=StartingIndex;((RowIndex<=RowCount)&&(Found==false));Found= (Alltrim(document.getElementById(ControlRowPrefix+RowIndex).innerText).substring(0,obj.value.length).toUpperCase().startsWith(Alltrim(obj.value).toUpperCase()))?true:false,RowIndex++);
          }
    else if((navigator.appName.toUpperCase() == "OPERA")||(navigator.appName.toUpperCase()=="SAFARI")||(navigator.appName.toUpperCase()=="NETSCAPE"))
          {
            
            for(RowIndex=StartingIndex;((RowIndex<=RowCount)&&(Found==false));RowIndex++)
                   {
                            ControlObject=document.getElementById(ControlRowPrefix+RowIndex);
                            CompareValue=ControlObject.innerText.split(' ');
                            CompareValue=Alltrim(ControlObject.innerText).toUpperCase();
                            var Temp="";
                           for(z=0;z<CompareValue.length;z++)
                           {
                                if((CompareValue.charCodeAt(z)>=33)&&(CompareValue.charCodeAt(z)<=126))
                                {
                                    Temp=Temp+CompareValue[z];
                                }
                           }
                           CompareValue=Temp.toUpperCase().substring(0,obj.value.length).toUpperCase();
                           Found=(CompareValue==Alltrim(obj.value).toUpperCase())?true:false;
                  }
           }
    else
          {
                for(RowIndex=StartingIndex;((RowIndex<=RowCount)&&(Found==false));RowIndex++)
                   {
                        ControlObject=document.getElementById(OuterRowPrefix+RowIndex);
                        for(var l = 0; (l < ControlObject.attributes.length); l++) 
                            { 
                                if(ControlObject.attributes.item(l).nodeName.toUpperCase()=="VALUE") 
                                    {
                                        CompareValue=Alltrim(ControlObject.attributes.item(l).nodeValue).substring(0,obj.value.length).toUpperCase();
                                        break;
                                    }
                            }
                        Found=(CompareValue==Alltrim(obj.value).toUpperCase())?true:false;
                  }   
          }
        RowIndex=(RowIndex>1)?RowIndex-1:1;
        if(CurrentlyHighLightedRow!=null)
        {
            TempRow=CurrentlyHighLightedRow.id;
            document.getElementById(TempRow).className=CurrentlyHighLightedRowClass;
        }
        if(Found==true)
        {
            CurrentlyHighLightedRow=document.getElementById(OuterRowPrefix+RowIndex);
            CurrentlyHighLightedRowClass=document.getElementById(OuterRowPrefix+RowIndex).className;
            document.getElementById(OuterRowPrefix+RowIndex).className=HighLightedClass;
            if(RowIndex>10)
            {
                document.getElementById(HolderGridId).scrollTop =document.getElementById(HolderGridId).style.height.replace("px","")+5;
            }
            else
            {
                document.getElementById(HolderGridId).scrollTop = 0;
            }
        }
        return false;
}
//Gets The CheckSum Value Of Specified CheckBox Or Multi-Select ListBox.
function GetCheckSum(FormObject,TagId)
     {
        var TagIdentity=null;
        var k;
        TagId=(TagId!=null)?Alltrim(TagId).toUpperCase():"";
        var Found=false;
        var Splitter="";
        var CheckSum=0;
        var SelectedControlName="";
        for(i=0;((i<FormObject.elements.length)&&(Found==false));i++)
            {
                var RequiredAttributes=GetRequiredAttributes(FormObject.elements[i]);
                TagIdentity=(RequiredAttributes[0]!=null)?RequiredAttributes[0].toUpperCase():null;
                if(TagIdentity==null) continue;
                if(Alltrim(TagIdentity).toUpperCase()==Alltrim(TagId).toUpperCase())
                {
                    Found=true;
                    SelectedControlName=FormObject.elements[i].name;
                }
            }
        if(Found==false) return 0;
        var inputs=document.getElementsByName(SelectedControlName);
        switch(FormObject.elements[i].type)
            {
                case "checkbox":
                    for(k=0;k<inputs.length; CheckSum=CheckSum+parseInt(((inputs[k].checked==true)?inputs[k].value:0)),k++);
                    break;
                case "select-multiple":
                    for(k=0;k<inputs.length; CheckSum=CheckSum+parseInt(((inputs[k].selected==true)?inputs[k].value:0)),k++);            
                    break;
                default:
                    CheckSum=0;
                    break;
            }
           return CheckSum;
      }
  
  
  /*Gets The CheckSum Values Of Each Of The CheckBoxes Or ListBoxes Specified In TagIds Tag.
   DELIMITER Is The Unique Delimiter With Which The Entire String Needs To Be Delimited.*/
  function GetCheckSumString(FormObject,TagIds,OuterDelimiter,InnerDelimiter)
  {
        var Temp=TagIds.split(',');
        var CompleteCheckSumString="";
        var i;
        for(i=0;i<Temp.length;i++)
        {
            CompleteCheckSumString=CompleteCheckSumString+OuterDelimiter+ Temp[i]+InnerDelimiter+GetCheckSum(FormObject,Temp[i]);
        }
       return CompleteCheckSumString;
  }
 //Populates Combo-Box And Multi-Select List-Box With Values Supplied
 function FillCombo(FormObject,TagId,Options)
    {
        var Temp;
        var AddOption;
        Options=Options.split(',');
        TagId=Alltrim(TagId).toUpperCase();
        var SelectedControl=null;
        var i;
        var RequiredAttributes;
        var TagIdentity=null;
        for(i=0;((i<FormObject.elements.length)&&(SelectedControl==null)); i++)
            {
                RequiredAttributes=GetRequiredAttributes(FormObject.elements[i]);
                TagIdentity=(RequiredAttributes[0]!=null)?RequiredAttributes[0].toUpperCase():null;
                if(TagIdentity==null) continue;
                
                SelectedControl=(Alltrim(TagIdentity).toUpperCase()==TagId)?FormObject.elements[i]:SelectedControl;
            }
        if(SelectedControl==null) return false;
        SelectedControl.innerHTML="";
        var i;
        switch(SelectedControl.type)
        {
            case "select":
            case "select-one":
            case "select-multiple":
            //Remove All Existing Elements Of The Selectec Combo Box Or List Box.
            while(SelectedControl.length>0) SelectedControl.remove(0);
            
            for(i=0;i<Options.length;i++)
            {
                 AddOption = SelectedControl.appendChild(document.createElement('option'));
                 Temp=Options[i].split('=');
                 AddOption.text = Temp[0];
                 AddOption.value = Temp[1];
            }
            break;
        }
    }
    
/*This Function Simply Hides Or Shows DIV Tags Specified As First Parameter Of The Function Delimited By ",".
 The Second Parameter Contains Either "inline" or "hidden" Depending Whether The Specified Tags Need To 
 Hidden Or Made Visible.
*/
function ShowHideDiv(DivIds,ShowOrHide)
 {
    DivIds=DivIds.split(',');
    var i;
    for(i=0;i<DivIds.length;i++)
    {
        document.getElementById(DivIds[i]).style.visibility=ShowOrHide;
        document.getElementById(DivIds[i]).style.display=(Alltrim(ShowOrHide).toUpperCase()=="HIDDEN")?"none":"inline";
    }
 }
 
 //Adds A "0" To The Value Sent In As Parameter And Returns It Back To The Calling Function If Value Is Less Than Or Equal To 9.
 function GetDouble(Value)
    {
        return (((parseInt(Value,10)<=9)?"0"+Value:""+Value));
    }
  
 function LockControl()
    {
        if(WaitingForResponse==true)
        document.getElementById("Holder2").focus();
    }
   
/*This function takes a numeric number as input and returns an equal value in words for eg 1234 will return One Thousand Two Hundered Thirty Four */
function toWords(s)
{
	var th = ['','thousand','million', 'billion','trillion'];
    // uncomment the line below for English Number System
    //var th = ['','thousand','million', 'milliard','billion'];

    var dg = ['zero','one','two','three','four', 'five','six','seven','eight','nine']; 
    var tn = ['ten','eleven','twelve','thirteen', 'fourteen','fifteen','sixteen', 'seventeen','eighteen','nineteen']; 
    var tw = ['twenty','thirty','forty','fifty', 'sixty','seventy','eighty','ninety']; 
	
	s = s.toString(); 
	s = s.replace(/[\, ]/g,''); 
	if (s != String(parseFloat(s))) 
		return 'not a number'; 
	var x = s.indexOf('.'); 
	if (x == -1) x = s.length; 
	if (x > 15) return 'too big'; 
	var n = s.split(''); 
	var str = ''; 
	var sk = 0; 
	for (var i=0; i < x; i++) 
	{
		if ((x-i)%3==2) 
			{	if (n[i] == '1') 
					{
						str += tn[Number(n[i+1])] + ' '; 
						i++; 
						sk=1;
					} 
				else if (n[i]!=0) 
					{
						str += tw[n[i]-2] + ' ';
						sk=1;
					}
			} 
		else if (n[i]!=0) 
			{
				str += dg[n[i]] +' '; 
				if ((x-i)%3==0) str += 'hundred ';sk=1;
			} 
			if ((x-i)%3==1) 
				{
					if (sk) str += th[(x-i-1)/3] + ' ';
					sk=0;
				}
	} 
	if (x != s.length) 
		{
			var y = s.length; str += 'point '; 
			for (var i=x+1; i<y; i++) str += dg[n[i]] +' ';
		} 
	
	return str.replace(/\s+/g,' ');
 }
 
 //Sorts Elemeents Of A ListBox
 function SortSelect(selElem) 
	{ 
        var tmpAry = new Array(); 
        for (var i=0;i<selElem.options.length;i++) 
        { 
                tmpAry[i] = new Array(); 
                tmpAry[i][0] = selElem.options[i].text; 
                tmpAry[i][1] = selElem.options[i].value; 
        } 
        tmpAry.sort(); 
        while (selElem.options.length > 0) 
        { 
            selElem.options[0] = null; 
        } 
        for (var i=0;i<tmpAry.length;i++) 
        { 
                var op = new Option(tmpAry[i][0], tmpAry[i][1]); 
                selElem.options[i] = op; 
        }
    }

function SetTags(HTMLControlObject,TagName,TagValue)
     {
          HTMLControlObject=Alltrim(HTMLControlObject);
          TagName=Alltrim(TagName);
          TagValue=Alltrim(TagValue);
          
         var ControlObject=document.getElementById(HTMLControlObject);
         for(var l = 0; (l < ControlObject.attributes.length); l++) 
             { 
                 if(ControlObject.attributes.item(l).nodeName.toUpperCase()==TagName.toUpperCase()) 
 	                {
              		    ControlObject.attributes.item(l).nodeValue = TagValue;
      		            break;
             	    }
             }
    }


