﻿var oRegAmount  = /^\d*[0-9]\d*(\.\d+)?$/;
var oRegEmail =/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/ ;
var oRegDate =/(0[1-9]|1[012])[ /.](0[1-9]|[12][0-9]|3[01])[ /.](19|20)\d\d/;
var oRegUSPhone = /^\d{10}$/;
//var oRegOtherPhone =/(\d|-){1,15}/;
var oRegOtherPhone =/^\d{15}$/;
var oRegUSZip =/(^\d{5}-\d{4}$)|(^\d{5}$)/;
var oRegCanadaZip =/(?:([A-Za-z0-9]{3}[ ][A-Za-z0-9]{3}))/;
var oRegTime =   /^(20|21|22|23|[01]\d|\d)(([:][0-5]\d){1,2})$/;
var oRegTrim =/^\s*(\S+(\s+\S+)*)\s*$/;
var oRegRightTrim =/^\s*(\S+(\s+\S+)*)\s*$/;

//List of blocked characters used for validation of special chars in checkForSpecialChars() javascript method
var strBlockListName = "~,|,\",^,%,$,#,+,=,},{,],[,],?,>,<,!";
var strBlockListPassword = "?,>,<,&,\",',";
var strBlockListNameSearch = "~,|,',\",^,$,@,#,+,=,},{,],[,],?,>,<,!";           
var strBlockListNameLic = "~,|,\",^,%,$,=,{,},[,],?,>,<,!";               //[001]
var strBlockListNameLicSearch = "~,|,\",^,$,=,{,},[,],?,>,<,!";           //[001]
var strBlockListMultipleSearch = "~,\",^,$,@,#,+,=,},{,],[,],?,>,<,!";
var strBlockListAddress = "~,|,\",^,%,$,?,>,<,!";
var strBlockListComments = "~,|,\",^";
var strBlockListMultipleCommentsSearch = "~,\",^";
var strBlockListCity = "~,|,\",^,%,$,?,<,>,!,`,&,-,_,\\,;,:,\/,',@,#,+,=,{,},[,],(,),,";

    function checkForSpecialChars(obj,mode,dependentValue,charsNotToBeBlocked,eve)
    {
  
  	//obj.value = trim(obj.value);
  	var result = true;
  	var strValue=trim(obj.value);	
  	if(strValue.length==0)
	{
	    obj.value=trim(obj.value);
	    return true;
	}
	
	var blockList="";	
	
	
	if (mode == "I")
	{
		for(var j=0; j < strValue.length; j++)
		{
			if (strValue.charCodeAt(j) < asciiNumberZero || strValue.charCodeAt(j)> asciiNumberNine)
			{
				alert("Only Numeric values (0-9) are allowed.");//MESSAGE CODE: GEN005
				result= false;
			    break;
			}
		}
	}
	
	else if (mode == "S") //Character Type Validation
	{
		for(var j=0; j < strValue.length; j++)
		{
		
			if (!((strValue.charCodeAt(j) >= asciiA && strValue.charCodeAt(j)<= asciiZ) || (strValue.charCodeAt(j) >= asciiSmallA && strValue.charCodeAt(j) <= asciiSmallZ) || (strValue.charCodeAt(j)==asciiBlankSpace)))
			{
				alert("Only Characters are allowed.");//MESSAGE CODE: is not declared
				result= false;
			    break;
			}
		}
	}else if (mode == "P")
	{
	   for(var j=0; j < strValue.length; j++)
		{   
			if (!((strValue.charCodeAt(j) >= asciiA && strValue.charCodeAt(j)<= asciiZ) || (strValue.charCodeAt(j) >= asciiSmallA && strValue.charCodeAt(j) <= asciiSmallZ) ||  (strValue.charCodeAt(j) >= asciiNumberZero && strValue.charCodeAt(j) <= asciiNumberNine)))
			{
				alert("Only Alpha-Numeric values are allowed.");//MESSAGE CODE: GEN007
				result= false;
				break;
			}
		}
	}
	else if (mode == "OZ")
	{
	   for(var j=0; j < strValue.length; j++)
		{   
			if (!((strValue.charCodeAt(j) >= asciiA && strValue.charCodeAt(j)<= asciiZ) || (strValue.charCodeAt(j) >= asciiSmallA && strValue.charCodeAt(j) <= asciiSmallZ) ||  (strValue.charCodeAt(j) >= asciiNumberZero && strValue.charCodeAt(j) <= asciiNumberNine)))
			{
	            
                if(dependentValue!='undefined' && (dependentValue==null || dependentValue.length==0))
				    alert("Zip format is not valid.");//MESSAGE CODE: GEN007
				 else
				alert("Zip format is not valid for the selected country.");//MESSAGE CODE: GEN007
				result= false;
				break;
                				
			}
		}
	}
	else if (mode == "MI")
	{ 
	    for(var j=0; j < strValue.length; j++)
		{
			if (strValue.charCodeAt(j) < asciiNumberZero || strValue.charCodeAt(j)> asciiNumberNine)
			{
			    if(strValue.charCodeAt(j) != asciiPipe)
			    {
				    alert("Only Numeric values (0-9) are allowed.");//MESSAGE CODE: GEN005
				    result= false;
			        break;
			    }
			}
		}
	}
	else if(mode=="OP" || mode=="OF")
    {
            
            if(!oRegOtherPhone.test(strValue))
	        {
	          if(mode=="OP")
	          {
	            if(dependentValue!='undefined' && (dependentValue==null || dependentValue.length==0))
				    alert("Phone format is not valid.."); //MESSAGE CODE: ADR008
				 else
	          	    alert("Phone format is not valid for the selected country."); //MESSAGE CODE: ADR008
	          	}
	          else
	          {
	            if(dependentValue!='undefined' && (dependentValue==null || dependentValue.length==0))
				    alert("Fax format is not valid.."); //MESSAGE CODE: ADR008
		        else
        	         alert("Fax format is not valid for the selected country."); //MESSAGE CODE: ADR008
	          	}
				result= false;
	        }
    
    }
	else if(mode=="E")
	{       
	     if(!oRegEmail.test(strValue))
	     {
	        alert("Email provided is not in a recognized format. Please provide a valid email address."); //MESSAGE CODE: GEN013
	        result= false;
	       
	      }
	        
	}
	else if(mode=="D")
	{       if(obj.value == "MM/DD/YYYY")
	        {
	            obj.value='';
	            result= true;
	        }
	        if(!isDate(strValue))
	        {
	        	alert("Please enter valid date."); //MESSAGE CODE: GEN003
				result= false;
	        }
	    	      	        
	}else if(mode=="B")
	{
	     
	        if(!oRegAmount.test(strValue))
	        {
	          	alert("Please enter valid amount."); //MESSAGE CODE: GEN007
				result= false;   
	        }
	        
	}
	else if(mode=="UCP" || mode=="UCF" )
	{
	        if(obj.value == "###-###-####")
            {
                obj.value='';
                result= true;
            }
            else
            {
	            if(!oRegUSPhone.test(strValue))
	            {
	            if(mode=="UCP")
	          	    alert("Phone format is not valid for the selected country. Enter 10 digit number."); //MESSAGE CODE: ADR008
	             else
	                 alert("Fax format is not valid for the selected country. Enter 10 digit number."); //MESSAGE CODE: ADR008
    			
    				
				    result= false;
	            }
	        }
	}
	
    else if(mode=="UZ")
    {
           
            if(obj.value == "#####-####")
            {
                obj.value='';
                result= true;  
            }
            else
            {
               if(!oRegUSZip.test(strValue))
	            {
	          	    alert("Zip format is not valid for the selected country"); //MESSAGE CODE: GEN007
				    result= false;  
	            }
	        }
    
    }
    else if(mode=="CZ")
    {
            if(obj.value == "### ###")
            {
                obj.value='';
               result= true; 
            }
            else
            {
               if(!oRegCanadaZip.test(strValue))
	            {
	          	    alert("Zip format is not valid for the selected country"); //MESSAGE CODE: GEN007
				    result= false;
	            }
	        }
    
    }
    else if(mode=="FS")
    {
        for(var j=0; j < strValue.length; j++)
		    {
			    if (strValue.charCodeAt(j) < asciiNumberZero || strValue.charCodeAt(j)> asciiNumberNine )
			    {
				    if(strValue.charCodeAt(j)!=asciiHyphen)
				    {
				    alert("Only Numeric values (0-9) and - are allowed.");//MESSAGE CODE: GEN005
				    result= false;
			        break;
			        }
			    }
		    }
    }
    
	else
	{
		if(mode == "N")
			blockList = strBlockListName;
		else if(mode=="PWD")
		    blockList=strBlockListPassword;
		else if(mode == "NS")
		blockList =  strBlockListNameSearch;
		else if(mode == "NL")                               //[001]
		    blockList = strBlockListNameLic;                //[001]
		else if(mode == "NLS")                              //[001]
		    blockList = strBlockListNameLicSearch; 
		else if(mode == "A")
			blockList = strBlockListAddress;
		else if(mode == "C")
		{
		   blockList = strBlockListComments;
		}
		else if(mode == "MS")
		    blockList = strBlockListMultipleSearch;
		else if(mode == "MCS")
		    blockList = strBlockListMultipleCommentsSearch;
		else if(mode=="T" )
		    blockList = strBlockListCity;
		    
		if(charsNotToBeBlocked!='undefined' && charsNotToBeBlocked!=null && charsNotToBeBlocked.length>0)
	    {
                blockList = blockList.replace(new RegExp(',','ig'),'');	 //remove if blockList is in regexp pattern           
	            charsNotToBeBlocked = "/["+charsNotToBeBlocked.replace(new RegExp(',','ig'),'')+']/ig';
	            blockList = blockList.replace(eval(charsNotToBeBlocked),'');
	            blockList = blockList.split(/ */).join(","); //remove if blockList is in regexp pattern         
	    }
		for(var pos=0;pos<blockList.length;pos++){
			var charIndex = strValue.indexOf(blockList.charAt(pos));
			if (charIndex > -1){
				alert("These special characters ("+blockList+") are not allowed."); //MESSAGE CODE: GEN009
				result= false;
				break;
			}
			pos = pos+1;
		}
		if(mode == "C")
		{
		    oRegCom =/<(\S+)/g;
		    if(oRegCom.test(obj.value))
		    {		     
	            obj.value=obj.value.replace(new RegExp('<[\\s]','ig'),'<') ;
		        obj.value=obj.value.replace(new RegExp('<','ig'),'< ') ;
		        strValue=obj.value;
		        result= validateCommentsLength( obj )
		        //alert(ValidateDynamicFeildsOnBlur(obj,mode, dependentValue));
		        ValidateDynamicFeildsOnBlur(obj,mode, dependentValue);
            }
		}
	}
	
	if(!result)
	{
	    obj.value = '';
	   cancelEvent(eve);
	   obj.focus();	
	   obj.select();
	    return false;	
	   
    }
    else
    {
        obj.value=trim(obj.value);
    }
         
        
	return result;
}
function validateCommentsLength( obj ) {
          var maxLength = obj.getAttribute("maxlength");
		   if(obj.value.length>maxLength)
		   {
		    obj.focus();
		        alert('Only ' + maxLength + ' characters are allowed.');
		       
		        return false;
		   }  
	return true; 
}
function rightTrim( strValue ) {
      if(oRegRightTrim.test(strValue)) {
       //remove trailing whitespace characters
       strValue = strValue.replace(oRegRightTrim, '$1');
    }
  return strValue;
}
function trim(strValue)
{
	var match = strValue.match(oRegTrim);
	return (match == null) ? '' : match[1];
}
function isDate(dtStr){
 if(!oRegDate.test(dtStr))
     return false;
     //Create array of no of days in a month
     var itemIndex = 0;
     var arrTemp = dtStr.split(dtCh);
     var month = arrTemp[itemIndex];
     var day = arrTemp[++itemIndex];
     var year = arrTemp[++itemIndex];
     //till here 
     var testDate = new Date(new Date(year, month, 1) - 1);
     //Validate no of days in month
     if (day<1 || day>testDate.getDate()){
      return false
     }
     
     //Validate year range 
     if (year<minYear || year>maxYear){
      return false
     }
     
 return true
}
function doKeypress(control, e)
{        
    maxLength = control.attributes["maxlength"].value;
    value = control.value;
    if(maxLength && value.length > maxLength-1)
    {
        if(document.selection.createRange().text.length<maxLength)
        {
            e.keyCode = 0;
            cancelEvent(e);
            //event.returnValue = false;
            maxLength = parseInt(maxLength);
        }
    }
}
function doBeforePaste(control, e){
   var maxLength = control.attributes["maxlength"].value;
    if(maxLength)
    {
        cancelEvent(e);
    }
}
function doPaste(control,e)
{
 var   maxLength = control.attributes["maxlength"].value;
    value = control.value;
    if(maxLength)
    {
//        event.returnValue = false;
        cancelEvent(e);
        maxLength = parseInt(maxLength);
        var oTR = control.document.selection.createRange();
        var insertLength = maxLength - value.length + oTR.text.length;
        var sData = window.clipboardData.getData("Text").substr(0,insertLength);
        oTR.text = sData;
    }
}
function OpenMenuPage(strURL)
{
    if(trackChangedForm())
    {
        setBusyCursor();
        window.location = strURL;
    }
}
function GetScrollPosition() {
	var val;
    if (self.pageYOffset) // all except Explorer
    {
    	
	    val = self.pageYOffset;
    }
    else if (document.documentElement && document.documentElement.scrollTop)
	    // Explorer 6 Strict
    {
	    val = document.documentElement.scrollTop;
    }
    else if (document.body) // all other Explorers
    {
    	val = document.body.scrollTop;
    }
    return val; 
}

///function to disable save button after one click.
function DisableControl(controlId)
{
  document.getElementById(controlId).disabled =true;
}
 
function DisableControl_SetTimeout(controlId,interval)
{
  setTimeout("DisableControl('" +controlId + "')",interval);
}
 
function btnSave_Click(control)
{
  DisableControl_SetTimeout(control.id,10);
}
function checkMask(obj,maskType,e)
{
    var keyCode = e.keyCode;
    if(keyCode == 18)
		return false;
	if(keyCode == 17)
    {
        return true;
    }
    var isShift ;//= isShift;
    if(e.shiftKey)
        isShift = true;
    else
        isShift = false;
    if ((keyCode==8) || (keyCode==12)  || (keyCode==13)  || (keyCode==27) || (keyCode==45) ||(keyCode==46)  || (keyCode==9)  || (keyCode==16)  || (keyCode>=33 && keyCode<=40) || (keyCode>=112 && keyCode<=123))
	{
		event.returnValue=true;
	}
	else
	{ 
	   switch(maskType)
	    {
            case "I" :
				if ((keyCode>=48 && keyCode<=57 && !isShift)  || ((keyCode>=96 && keyCode<=105) && !isShift)) 
				{
					event.returnValue=true;
				}
				else
				{
					cancelEvent(e);
				}
				break;
            
            case "UZ"  :
					
				if (((keyCode>=48 && keyCode<=57 &&  !isShift)  || (keyCode>=96 && keyCode<=105)) && !isShift ) 
				{
				  			
                     if (keyCode!=189 && obj.value.length == 6 && obj.value.indexOf("-") == -1 )
                     {
							 obj.value = obj.value.substring(0,5) + "-" + obj.value.substring(obj.value.length-1,obj.value.length);
							 event.returnValue=true;
                     }
                     else
                     {
                        event.returnValue=true;
                     }
                     
				}
				else  if((keyCode==189)&& (obj.value.length == 5) && obj.value.indexOf("-") == -1)
                {
                             event.returnValue=true;
                
				}
				else
				{
					cancelEvent(e);
				}
				
				break;
               case "CZ" :
               if ((keyCode>=48 && keyCode<=57 && !isShift)   || (keyCode>=97 && keyCode<=122)  || (keyCode>=65 && keyCode<=90) || (keyCode==32))
				{
					if ((keyCode==32)&& (obj.value.length < 3 || obj.value.indexOf(" ") != -1))//For space
                     {
					    cancelEvent(e);
                     }
                     else if ((keyCode!=32)&& (obj.value.length == 3))
					 {
						obj.value += " ";
                        event.returnValue=true;
                     }
                     else
                     {
                          event.returnValue=true;
                     }
				}
				else
				{
					cancelEvent(e);
				}
				break;
			case "B"   :
                	   
                	               		
				if ((keyCode==190 || keyCode==110) && (obj.value.indexOf('.') > -1))
				{
                    cancelEvent(e);
                }
                else if ((((keyCode>=48 && keyCode<=57)|| keyCode==190 || keyCode==110 || (keyCode>=96 && keyCode<=105))&& !isShift))
				{
				
					if (obj.value.length==7  && obj.value.indexOf('.') == -1 && keyCode!=190 && keyCode!=110)
					{
						obj.value += ".";
					    
					    event.returnValue=true;
					}
				}
				else
				{
                       cancelEvent(e);
				}
				break;	
	        
	        case "D"  :
				if (( keyCode>=48 && keyCode<=57 && !isShift) || keyCode==189  || keyCode==109  || keyCode==191   || keyCode==111   || ((keyCode>=96 && keyCode<=105)&& !isShift))
				{
					if ( ((obj.value.length==0 || obj.value.length==3) && (keyCode==189  || keyCode==191 || keyCode==111 || keyCode==109)) || ( (obj.value.length==4 || obj.value.length==5) && ((obj.value.indexOf('/') == 2 && (keyCode==189 || keyCode==109)) || (obj.value.indexOf('-') == 2 && (keyCode==191 || keyCode==111))) )     )
					{
						cancelEvent(e);
					}
					else if  (obj.value.length > 5)
                                        {
                                            if (keyCode==189 || keyCode==109)
                                            {
                                                if ((obj.value.indexOf("-") == 2 && obj.value.substring(3,obj.value.length).indexOf("-") == 2) || (obj.value.indexOf("/") == 2 && obj.value.substring(3,obj.value.length).indexOf("/") == 2))
                                                {
                                                    cancelEvent(e);
                                                }
                                                else
                                                {
                                                    //additional checks...
                                                }
                                            }
                                            else if (keyCode==191 || keyCode==111)
                                                if ((obj.value.indexOf("-") == 2 && obj.value.substring(3,obj.value.length).indexOf("-") == 2) || (obj.value.indexOf("/") == 2 && obj.value.substring(3,obj.value.length).indexOf("/") == 2))
                                                {
                                                    cancelEvent(e);
                                                }
                                                else
                                                {
                                                    //additional checks...
                                                }
                                        }
                                        else
					                    {
						                    if ((obj.value.length==1) && (keyCode==189  || keyCode==191 || keyCode==111 || keyCode==109))
							                    obj.value = "0" + obj.value;
						                    else if (obj.value.length==2 && obj.value.indexOf('/') == -1 && obj.value.indexOf('-') == -1 && (keyCode!=189 && keyCode!=109) && (keyCode!=191 && keyCode!=111))
							                    obj.value += "/";
						                    else if ((obj.value.length==4) && (keyCode==189  || keyCode==191  || keyCode==111 || keyCode==109))
							                    obj.value = obj.value.substring(0,3) + "0" + obj.value.substring(3,4);
						                    else if (obj.value.length==5  && (obj.value.indexOf('/') == 2 || obj.value.indexOf('-') == 2) && (keyCode!=189 && keyCode!=109) && (keyCode!=191 && keyCode!=111))
							                    obj.value += obj.value.substring(2,3);
						                    event.returnValue=true;
					                    }
				}
				else
				{
					cancelEvent(e);
				}
				break;
	            
	        case "DT"             :
	           
	           	if ((keyCode>=48 && keyCode<=57 && !isShift) || (keyCode==186 && isShift) || keyCode==189  || keyCode==109  || keyCode==191   || keyCode==111   || ((keyCode>=96 && keyCode<=105)&& !isShift))
				{
					
					if ((obj.value.length ==1) && (keyCode==186))
					{
						obj.value = "0" + obj.value + ":";
						cancelEvent(e);
					}
					if ((obj.value.length ==2) && (keyCode==186))
					{
						obj.value = obj.value + ":";
						cancelEvent(e);
					}
					else if ((obj.value.length!=2) && (keyCode==186))
					{
						cancelEvent(e);
					}
					else if (obj.value.length==2 && keyCode!=186)
					{
						obj.value += ":";
						event.returnValue=true;
					}
				}
				else
				{
					cancelEvent(e);
				}
				break;
				
	        case "UCP" :
	           if ((keyCode>=48 && keyCode<=57) || (keyCode>=96 && keyCode<=105) && !isShift)
				{
//						if (obj.value.length == 7 || obj.value.length == 3)
//								obj.value += "-";
							 event.returnValue=true;
                                        
				}
				else if(keyCode==189 && (obj.value.length == 3 || obj.value.length == 7) )
				{
				    event.returnValue=true;
				}
				else
				{
			
					cancelEvent(e);
				}
				break;	
			case "UCF" :
	           if ((keyCode>=48 && keyCode<=57) || (keyCode>=96 && keyCode<=105) && !isShift)
				{
//						if (obj.value.length == 7 || obj.value.length == 3)
//								obj.value += "-";
							 event.returnValue=true;
                                        
				}
				else if(keyCode==189 && (obj.value.length == 3 || obj.value.length == 7) )
				{
				    event.returnValue=true;
				}
				else
				{
			
					cancelEvent(e);
				}
				break;		        
	    }
	}
	return true;
}

function cancelEvent(e)
{
                if (!e)
                 if (window.event)
                    e = window.event;
                 else
                    return;
                   if (e.cancelBubble != null)
                      e.cancelBubble = true;
                   if (e.stopPropagation)
                       e.stopPropagation();
                   if (e.preventDefault)
                          e.preventDefault();
                   if (window.event)
                        e.returnValue = false;
                   if (e.cancel != null)
                        e.cancel = true;
				return false;

}
function GetElementByID(id)
{
    return document.getElementById(id);

}
 function setBusyCursor()
 {
    var divBusy = document.getElementById('loading1');
     if(divBusy != null) 
     { 
          divBusy.style.visibility='visible';
          document.getElementById('imgBusy').src='/Images/busy.gif';
     }
     self.document.body.style.cursor='wait';
 }
function resetBusyCursor()
{
  var divBusy = document.getElementById('loading1');
  if (divBusy !=null)
  {
     divBusy.style.visibility='hidden';
  }
  document.body.style.cursor='default';
 }
 function alertRemove() {
    var a =confirm('This will remove the product from cart. Do you wish to continue? ');
    if(a){ 
    //$get(ctrlID).value = a;
     }
    else{return false;}
  }
