﻿// General Form validations


    var n_errorcount =0;
    var v_message = '';

    function strip_lspaces(element)
    {
        /// <summary>Trims left spaces of a control's value</summary>
        /// <param name="element" type="string"></param>
        if (element != '')
	        while('' + element.charAt(0) == ' ')
	            element = element.substring(1,element.length);
        return element;
    }
    
    function isNotValidWebSiteURL(url)
    {
        /// <summary>Validates the Website URL.</summary>
        /// <param name="url" type="string"></param>
        if(url.length!=0)
           if(!/^https?:\/\/([\w-]+\.?)+[\w-]+(\/[\w- ./?%&=]*)?$/.test(url)) return true;
        return false;
    }
    
    function isNotPositiveInteger(val)
    {
        /// <summary>Checks for a Positive integer value.</summary>
        /// <param name="val" type="int"></param>
        if (parseInt(val) < 0 || isNaN(val) || val.indexOf('.')!=-1) return true;
        return false;
    }
    
    function isNotFloatValue(val)
    {
        /// <summary>Checks for a floating point value.</summary>
        /// <param name="val" type="string"></param>
        if(isNaN(val)) return true;
        return false;
    }
    
    function isEmpty(val)
    {
        /// <summary>Checks whether input control has value or not.</summary>
        /// <param name="" type=""></param>
	    if (val.length==0) return true;
	    return false;
    }
    
    function isNotZipCode(zip)
	{
	    /// <summary>Validates Zip Code.</summary>
        /// <param name="zip" type="string"></param>
		if((zip.length!=0) && (zip.length < 5 || zip.length >5))
			return true;
		else if(isNaN(zip)) 
			return true;
		return false;
	}
	
	function isNotPhoneNumber(phone)
	{
	    /// <summary>Validates Phone number.</summary>
        /// <param name="phone" type="string"></param>
		if (phone.length!=0)
			var sep = getseparator(phone, '-');
		if((phone.length!=0) && (phone.length < 12 || phone.length >12))
			return true;
		else if((isNaN(phone.substring(0,3))) || (isNaN(phone.substring(4,7))) || (isNaN(phone.substring(8,12)))) 
			return true;
		else if ((sep !="") && (phone.length!=0))
		{
			if((phone.indexOf(sep)!=3) || (phone.lastIndexOf(sep)!=7))
				return true;
		}
		else if(sep =='') 
			return true;
	    return false;
	}
    
    function isSelected(ddl)
    {
        /// <summary>Checks the Dropdown is Selected or not.</summary>
        /// <param name="ddl" type="int"></param>
        if(ddl==0) return true;
        return false;
    }
    
    function isNotAnEmail(email)
    {
        /// <summary>Validates email.</summary>
        /// <param name="email" type="string"></param>
        if (!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email)) return true;
        
	    /*if ((email.indexOf('@')== -1) || (email.indexOf('.')==-1))
		    return true;
	    else if((email.indexOf('@')==0) || (email.indexOf('.')==0))
		    return true;
	    else if(((email.indexOf('.')==email.indexOf('@')+1))||(email.indexOf('@')> email.lastIndexOf('.')))
		    return true;
	    else if(email.lastIndexOf('.')==email.length-1)
		    return true;
        else if (email.substring(email.lastIndexOf('.') + 1,email.length).length > 3)
        {
            return true;
        }
	    else
	    {
		    var chararray =new Array('\\','\'','~','!','#',' ','$','%','^','&','*','-','+','<','>','=','(',')','|','"','/',';',':','`',',');
		    if(s=validate_chars(email,chararray))
			    return true;
	    }
	    for(count=0,j=0;j<email.length;++j)
	    {
		    if(email.charAt(j)=='@')
			    count++
		    if(count==2) {
		        return true;
		        break;
		        }
	    }*/
	    return false;
    }

    //This function checks whether the mail
    //contains any special characters other then
    //'@' and '.'.
    function validate_chars(field,arraychars)
    {
	    for(p=0;p<field.length;++p)
		    for(j=0;j<arraychars.length;++j)
			    if(field.charAt(p)==arraychars[j])			
				    return arraychars[j];
    }
    
    function isNotAlphaNumeric(val)
    {
        /// <summary>Validates string without special characters (Alpha numaric).</summary>
        /// <param name="val" type="string"></param>
        var arraychars = new Array('\\','@','.','\'','~','!','#','$','%','^','&','*','-','+','<','>','=','(',')','|','"','/',';',':','`',',');
        for(p=0;p<val.length;++p)
		    for(j=0;j<arraychars.length;++j)
			    if(val.charAt(p)==arraychars[j])			
				    return true;
	    return false;
    }
    
    function isNotDate(edate)
	{
	    /// <summary>Validates the date in mm/dd/yyyy.</summary>
        /// <param name="date" type="string"></param>
		var date1=edate;
		var mm,dd,yy,sptr;
		sptr=getseparator(date1,'/');
		
	    if (sptr != "")
	    {       
	        mm=date1.substring(0,date1.indexOf(sptr));
	        dd=date1.substring(date1.indexOf(sptr)+1,date1.lastIndexOf(sptr));
	        yy=date1.substring(date1.lastIndexOf(sptr)+1,date1.length);
	        if(date1.length==0)
	            return true;
	        else if(isNaN(mm)||isNaN(dd)||isNaN(yy))
		        return true;
	        else if(parseInt(dd)>31)
	    	    return true;
	        else if(parseInt(mm)>12)
		        return true;
	        else if(yy.length==3 || yy.length==1 || yy.length>4 || yy.length==0)
		        return true;
	        else if((parseInt(mm)==4 || parseInt(mm)==6 || parseInt(mm)==9 || parseInt(mm)==11) && (parseInt(dd)>30))
	    	    return true;
	        else if( (parseInt(yy))%4 == 0 && parseInt(dd)>29 && parseInt(mm)==2)
		        return true;
		    else if(parseInt(yy)%4!=0 && parseInt(dd)>28 && parseInt(mm)==2)
	    	    return true;
	    }
	    else if(sptr == '' && date1.length!=0)
	        return true;
	    return false;
		    
	}
	
	function isInvalidTime(time)
    {
        /// <summary>Validates the time.</summary>
        /// <param name="time" type="string"></param>
        if(!(/^(\d{1,2}):(\d{2})(:(\d{2}))?(\s(AM|am|PM|pm))?$/.test(time)))
            return true;
        else
        {
            var splitTime = time.split(':');
            var hrs = splitTime[0];
            var _min = splitTime[1].split(' ');
            var min = _min[0];
            var am_pm = _min[1].toLowerCase();
            if (hrs == '' || min == '' || am_pm == '')
                return true;
            else if (hrs > 12)
                return true;
            else if(min >= 60)
                return true;
        }
        return false;
    }
    
	function getseparator(val, separator)
	{
	    /// <summary>checks whether separator exists in val or not.</summary>
        /// <param name="value" type="string"></param>
        /// <param name="separator" type="string"></param>
		if(val.indexOf(separator)!=-1)
			return separator;
		else
			return '';
	}
	
	
    //************* An Fckeditor Validation **********
    function  isEditorEmpty(FCKInst)
    {
        /// <summary>Checks the FCK Edirot value empty or not.</summary>
        /// <param name="FCKInstance" type="string"></param>
        if(window.navigator.appName.indexOf('Opera')==-1)
        {
            var oEditor = FCKeditorAPI.GetInstance(FCKInst);
            oEditor.UpdateLinkedField();
        }
        
        var v_editor = document.getElementById(FCKInst).value;
        if(v_editor =='' || v_editor=='<p>&nbsp;</p>') return true;
        return false;
    }
    
    function isNotValidFile(entered)
    {
        /// <summary>Checks whether the entered is a valid file name or not.</summary>
        /// <param name="msg" type="string"></param>
        var ext = entered.substr(entered.lastIndexOf(".")).toLowerCase();
        if ( ext!=".aspx") return true;
        return false;
    }
     
    function isNotValidImgFormat(imgName)
    {
        /// <summary>Checks whether the selected file is a valid file or not.</summary>
        /// <param name="imgName" type="string"></param>
        var ext = imgName.substring(imgName.lastIndexOf('.') + 1 ,imgName.length);
        ext = ext.toLowerCase(); 
        if(ext == 'gif' || ext == 'jpg' || ext == 'png' || ext == 'jpeg' || ext == 'gif' || ext == 'bmp')
            return false;
        return true;
    }   
    
    function isNotValidFileFormat(fileName)
    {
        /// <summary>Checks whether the selected file is a valid or not.</summary>
        /// <param name="fileName" type="string"></param>
        var ext = fileName.substring(fileName.lastIndexOf('.') + 1 ,fileName.length);
        ext = ext.toLowerCase(); 
        var fileFormats = new Array('jpg','png','jpeg','gif','bmp','swf','doc','xls','ppt','txt','pdf');
        
        for(var j=0;j<fileFormats.length; j++)
        {
            if(fileFormats[j] == ext )
                return false;
        }
        return true;
    }
    
    function addErrorMessage(msg)
    {
        /// <summary>Adds msg to the list of Error messages.</summary>
        /// <param name="msg" type="string"></param>
        n_errorcount = n_errorcount + 1;
        v_message =v_message + " (" + n_errorcount + ") " + msg + "\n";
    }
    
    function displayErrors()
    {
        /// <summary>Displays the list of Error messages.</summary>
        if (n_errorcount == 0)
        {
            /*var ctrl ;
            document.forms[0].submit();
            if(!e) e = window.event;
               
            if(e.srcElement)
                ctrl = e.srcElement;
            else 
                ctrl = e.target;
            window.setTimeout("disableButton('" + ctrl.id + "')", 0); */
		    return true;
		}
	    else
	    {
		    alert('Please check the following:\n\n' + v_message);
		    v_message = '';
		    n_errorcount =0;
		    return false;
	    }
	    return false;
    }
    

    function disableButton(buttonID)
    {
        ///<summary>Disables the button after click</summary>
        document.getElementById(buttonID).disabled=true;
    }   
    
    /* Ajax style functionality */   
    function ShowPopup(panel,bool)
    {
        ///<summary>Displays the Popup</summary>
        ///<param name="panel" type="string">Panel id to show as popup</param>
        ///<param name="bool" type="boolean">Show or Hide panel</param>
        panel = document.getElementById(panel);
        disablePage(bool);
        panel.style.top = "200px";
        panel.style.left = "500px";
        panel.style.zIndex = "200";
        panel.style.position = "absolute";
        panel.style.display = bool? "block" : "none";
    }
    
    function disablePage(bool)
    {
        ///<summary>Sets modal popup sytle</summary>
        ///<param name="bool" type="boolean">Show or Hide the style</param>
        if(bool)
        {
            var blurDiv = document.createElement("div"); 
            blurDiv.id = "blurDiv"; 
            blurDiv.style.cssText = "position:absolute; top:0; right:0; width:" + screen.width + "px; height:" + screen.height + "px; background-color: #000000; opacity:0.7; filter:alpha(opacity=70)"; 
            document.getElementsByTagName("body")[0].appendChild(blurDiv); 
        }
        else{
            var div = document.getElementById('blurDiv');
            if(div != undefined) document.body.removeChild(div);
        }
    }
