// 
	/*
	******************************************
	*	File Location:/js/function.js		 *
	*										 *
	*	1.File Name:function.js				 *  
	*										 *	
	*	2.Write all java script			     *
	*										 *
	*	functions used in Vision Pipeline.   *
	*										 *
	*	3.All functions have first latter in *
	*										 *
	*	CAPS. e.g. GetFieldId(fieldId)	     *
	*										 *
	*	4.Created By :						 *
	*										 *
	*	5.Date Of Creation :				 *
	*										 *
	*	6.Last Modified Date:				 *
	*										 *
	*	8.Bugs Listed :						 *	
	******************************************
	*/



	/*
		Function : GetFieldId(fieldId)

		@param : field Id .

		Note:1.Use this function to get id of a field by getElementById.
		
	*/


	function GetFieldId(fieldId){
			 var getField = document.getElementById(fieldId); 
			 return getField;
	}



	/*
		Function : SetClass(onFieldId, onClsaaName, fromFieldId, fromSetClassName)

		@param	 : onFieldId  - (Id of the field where you want to change the class).
		@param	 : onClsaaName - (Name of the class you want to apply).
		@param	 : fromFieldId  - (Id of the field from where you are comming to current field).
		@param	 : fromSetClassName - (Name of the class you want to apply on the field from where you are comming to current field).
				   
		Note:1.Use this function to set a class by java script.
		Note:2. if you are useing this function for the first field of the class then put the name of the second field as comming field. 

	*/

	function SetClass(onFieldId, onClsaaName, fromFieldId , fromSetClassName){
			
			 var getFieldOn = GetFieldId(onFieldId); // Get field Id - Call function GetFieldId(fieldId)
			
			 getFieldOn.className = onClsaaName; // Set class

			 if(fromFieldId != null && fromSetClassName!= null){

				  var getFieldFrom = GetFieldId(fromFieldId); // Get field Id - Call function GetFieldId(fieldId)

				  getFieldFrom.className = fromSetClassName; // Set class
elementIdNew
			 }
			
			 return true;		
	}

	function SetClass1(onFieldId, onClsaaName){
			 var getFieldOn = GetFieldId(onFieldId); // Get field Id - Call function GetFieldId(fieldId)
			
			 getFieldOn.className = onClsaaName; // Set class			 
   
			 return true;		
	}

	/*
		Function : setFocus(fieldId)

		@param	 : field Id - (where you need to set focus).

		Note:1.Use this function to set focus on first field of form.

		2.Never call this function in header on onLoad event. Call it in file where the field is.
		
		e.g. <script>
				setFocus('idFirstName');
			</script>
	*/
	function SetFocus(fieldId){
			
			 var getField = GetFieldId(fieldId);// Get field Id - Call function GetFieldId(fieldId)

			 getField.focus();// Set focus

			 return false;
	}

	/*
		Function : fieldValue(fieldId)

		@param	 : field Id - (where you need to set focus).

		Note:1.Use this function to get the value of a field.
	*/
	function GetFieldValue(fieldId){
						
			 var getField = GetFieldId(fieldId); // Get field Id - Call function GetFieldId(fieldId)

			 return getField.value;//Set Value
	}


	/*
		Function : ClearFieldValue(fieldId, value)

		@param	 : field Id - (where you need to clear value of a text field).

		Note:1.Use this function to clear the value of a field.
	*/

	function ClearFieldValue(fieldId,value){
			
			var getFieldValue = GetFieldValue(fieldId); // Get field Id - Call function GetFieldId(fieldId)

			var getFieldId = GetFieldId(fieldId);
			
			if(getFieldValue != value){
			
				return true;

			}else{

				 getFieldId.value = '' ;//Clear Value	

			}

			 return true;
	}

	/*
		Function : function trim(b)

		@param	 : b - string you want to trim.
		Change Needed: argument should not be as b. 
	*/
			function trim(b){

			var i=0;

			while(b.charAt(i)==" "){

				i++;

			}
			
			b=b.substring(i,b.length);

			len=b.length-1;
			
			while(b.charAt(len)==" "){

				len--;

			}

			b=b.substring(0,len+1);

			return b;
		}

		
	/*
		Function : function isEmail(s)

		@param	 : s - email id you want to check.
		Change Needed: argument should not be as s. 
	*/
	function isEmail(s)
	{
		var regex = /(^[a-z]([a-z_\.]*)@([a-z_\.]*)([.][a-z]{3})$)|(^[a-z]([a-z_\.]*)@([a-z_\.]*)(\.[a-z]{3})(\.[a-z]{2})*$)/i

		var regex =	/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;

		return regex.test(s);
	}

	
	/*
		Function : display(displayfieldId)

		@param	 : displayfieldId - id of the field you want to display which is currently hide.
	*/
	function display(displayfieldId){

		var displayfieldIdObj = GetFieldId(displayfieldId);
		if(displayfieldIdObj != null){
			displayfieldIdObj.style.display = '';
		}
		return false;
	}

	/*
		Function : displayHide(fieldId)

		@param	 : fieldId - id of the field you want to hide.
	*/
	function displayHide(fieldId){

	var fieldIdObj = GetFieldId(fieldId);
			//alert(fieldIdObj);
			if(fieldIdObj != null)
			{
				fieldIdObj.style.display = 'none';
				return false;
			}
	}

	/*
		Function : checkedBoxChecked(fieldId)

		@param	 : fieldId - id of the check box.
		Note: Below function is used to check that a check box is check or uncheck.
	*/
	function checkedBoxChecked(fieldId){

		var fieldIdObj = GetFieldId(fieldId);

		var checkValue = fieldIdObj.checked;

			if(checkValue == true){
				
				return true;
			}else{
				
				return false;
			}
	}


	/*
		Function : checkedBoxDisHide(fieldId,displayField,hideField)

		@param	 : fieldId		- id of the check box.
		@param	 : displayField - id of the field you want to display.
		@param	 : hideField	- id of the field you want to hide.

		Note: Below function is used to show and haide two fields when click on a checkbox.

	*/

	function checkedBoxDisHide(fieldId,displayField,hideField){

		var fieldIdObj = GetFieldId(fieldId);

		var checkValue = fieldIdObj.checked;

			if(checkValue == true){

				display(displayField);

				displayHide(hideField);	

				return true;

			}else{

				display(hideField);

				displayHide(displayField);	

				return false;

			}
	}
		

	/*
		Function : checkEmpty(fieldId)

		@param	 : fieldId - id of the field.
		Note: below function is used to check that a field has value or not..
	*/
		function checkEmpty(fieldId){	
	
			var getFieldValue = GetFieldValue(fieldId);

				if(trim(getFieldValue) == ''){

					return false;

				}else{

					return true;

				}
		}
	
		
	/*
		Function : splitString(string,symbol)

		@param	 : string - string you want to split.
		@param	 : symbol - symbol you used to split string.
		Note: below function is used to check that a field has value or not..
	*/
		function splitString(string,symbol){

			var splitedString = string.split(symbol);

			return splitedString;
		}

	/*
		Function : SetFldValVal(fieldId, value)

		@param	 : field Id - (where you need to set value of a text field).
		@param	 : value - (value you want to set for text field).

		Note:1.Use this function to clear the value of a field.
	*/
	function SetFieldValue(fieldId, value){
				
			 var getField = GetFieldId(fieldId); // Get field Id - Call function GetFieldId(fieldId)
			
			 var getFieldValue = GetFieldValue(fieldId);
			
			 if(trim(getFieldValue) == '' || trim(getFieldValue) == null){
			
				 getField.value = value ;//Set Value	
				
			 }

			 return false;
	}

	function getEmptyClass(fieldId) {
	    if (!checkEmpty(fieldId)){
	        return ' is-empty';	        
	    }
	    return '';
	}
		
	/*
		Function : textCounter(field, countfield, maxlimit)

		@param	 : field Id - (Id of the field).
		@param	 : countfield - (where to show counter).
		@param	 : maxlimit - (Max limit).

	Eg.	
	<tr>
			<td colspan = "2" align = "right">
				<textarea  name = "SENDERNOTE" id = "idSENDERNOTE" class = "textarea_email" onKeyDown="textCounter(this,document.SENDCONTACT.inputcount_website1,400);" onKeyUp="textCounter(this,document.SENDCONTACT.inputcount_website1,400);">Notes</textarea>			
			</td>
		</tr>
		<tr>
			<td colspan = "2" align = "left">
				<input readonly type="text" name="inputcount_website1" size="3" maxlength="3" value="200" style="border:1px; background:none; width:23px;"/>&nbsp;characters remaining
			</td>
		</tr>
		
	*/

	function textCounter(field, countfield, maxlimit) {	

	if (field.value.length > maxlimit) {

			field.value = field.value.substring(0, maxlimit);

		} else {

			countfield.value = maxlimit - field.value.length;

		}
	}

	/*
		Function : GetFieldId(fieldId)

		@param : field Id .

		Note:1.Use this function to get id of a field by getElementById.
		
	*/
	function changeImage(fieldId,imageName,ImagePath,hiddenFieldId){
			/*alert(fieldId);
			alert(imageName);
			alert(ImagePath);
			alert(hiddenFieldId);*/
			 var getfieldId = GetFieldId(fieldId);	

			 if(imageName == 'exclamation_off.png'){
		
					document.getElementById(hiddenFieldId).value='FALSE';

					var imgParm = 'exclamation_on.png';

					var actStatus = "Set activity as Vital";

			 }else if(imageName == 'exclamation_on.png'){
						
					document.getElementById(hiddenFieldId).value='TRUE';
					
					var imgParm = 'exclamation_off.png';

					var actStatus = "Set activity as nomal";

			 }
			//alert("<img title = '"+actStatus+"' class = 'cursor' src='"+ImagePath+"/"+imageName+"' onclick = \"changeImage('"+fieldId+"','"+imgParm+"','"+ImagePath+"','"+hiddenFieldId+"');\"/>");
			 getfieldId.innerHTML = "<img title = '"+actStatus+"' class = 'cursor' src='"+ImagePath+"/"+imageName+"' onclick = \"changeImage('"+fieldId+"','"+imgParm+"','"+ImagePath+"','"+hiddenFieldId+"');\"/>";
	}

/*
		Below function works same as above function but above function is not working from Important date
	*/	

		function changeImageImpDate(fieldId,imageName,ImagePath,hiddenFieldId){
			/*alert(fieldId);
			alert(imageName);
			alert(ImagePath);
			alert(hiddenFieldId);*/
			 var getfieldId = GetFieldId(fieldId);	

			 if(imageName == 'exclamation_off.png'){
		
					document.getElementById(hiddenFieldId).value='FALSE';

					var imgParm = 'exclamation_on.png';

					var actStatus = "Mark activits vital status";

			 }else if(imageName == 'exclamation_on.png'){
						
					document.getElementById(hiddenFieldId).value='TRUE';
					
					var imgParm = 'exclamation_off.png';

					var actStatus = "Mark activits vital status";

			 }
			//alert("<img title = '"+actStatus+"' class = 'cursor' src='"+ImagePath+"/"+imageName+"' onclick = \"changeImage('"+fieldId+"','"+imgParm+"','"+ImagePath+"','"+hiddenFieldId+"');\"/>");
			 getfieldId.innerHTML = "<img title = '"+actStatus+"' class = 'cursor' src='"+ImagePath+"/"+imageName+"' onclick = \"changeImageImpDate('"+fieldId+"','"+imgParm+"','"+ImagePath+"','"+hiddenFieldId+"');\"/>";
	}

	/*
		Function : isAlphaNumeric(s)

		@param : s (string).

		This function is used to check a string is alpha numeric or not.
		
	*/
	function isAlphaNumeric(s){

	   return isCharsInBag (s, ".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 ");
}

	function isNum(s){

   return isCharsInBag (s, "0123456789");
}

	/*	
		This function is used to validate contact phone no.
	*/
	function isValidPhone(s){

	   //alert(s);
	   return isCharsInBag (s, ".-ext0123456789 ()");
	}

	/*
		Function : isAlphaNumeric(s)

		@param : s (string).

		This function is used to check a string is alpha numeric or not.
		
	*/
	function isChar(s){

	   return isCharsInBag (s, " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
	}
	function isNum(s){

	   return isCharsInBag (s, "1234567890");
	}
	function avoidSpecial(s){

	   return isCharsInBag (s, ". abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\'@0123456789");
	}

	function labelValidation(s){

 return isCharsInBag (s, ". -^*$#&abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\'@0123456789\"");
	}	
	
	function isCharsInBag (s, bag)
	  {
		var i;
		// Search through string's characters one by one.
		// If character is in bag, append to returnString.

		for (i = 0; i < s.length; i++)
		{
			// Check that current character isn't whitespace.
			var c = s.charAt(i);

			if (bag.indexOf(c) == -1) return false;
		}

		return true;
	 }


	/*
		Function : displayWithCheck(fieldId, value ,displayFieldId)

		@param	 : fieldId - (id of the field to get value to compare).
		@param	 : value - (Value you nedd to compare).
		@param	 : displayFieldId Id - (id of the field you waht to display).

	*/

	 function ChangeType(fieldId,fieldtype){

		   var fieldIdObj = GetFieldId(fieldId);

		    fieldIdObj.type = fieldtype;	  		 

		    return true;
	 }
	 
	 /*
		Function : displayWithCheck(fieldId, value ,displayFieldId)

		@param	 : fieldId - (id of the field to get value to compare).
		@param	 : value - (Value you nedd to compare).
		@param	 : displayFieldId Id - (id of the field you waht to display).

	*/
	 
	 function checkedBoxChecked(fieldId){

		var fieldIdObj = GetFieldId(fieldId);

		var checkValue = fieldIdObj.checked;

			if(checkValue == true){
				
				return true;

			}else{
				
				return false;
			}
	}

	/*
		Function : SetClassTag(fieldId,fieldClass,totalCount,clearField)

		@param	 : fieldId - (id if the td if the tag).
		@param	 : fieldClass - (class of the field you wand to show).
		@param	 : totalCount - (total tags).
		@param	 : clearField - (id of the td you want to clear).

	*/

	function SetClassTag(fieldId,fieldClass,totalCount,clearField){
		
		if(fieldClass == 'left_part_links_active') {

			if(fieldId!='') { 

				currentSelectedContact = fieldId;
				
			}

			else {

				fieldId = currentSelectedContact;
				
			}
		}
			
			 var i = 0;

			 for(i = 0; i < totalCount ; i++)	{

				if(fieldId == i){
					
					 var getFieldOn = GetFieldId(i);

					 getFieldOn.className = fieldClass; 

				}else{
					
					 var getFieldOn = GetFieldId(i);

					 getFieldOn.className = clearField; 
				}
			 }
	
	}

	/*
		Function : setColor()

		@param	 : No.
	
	*/

	function setColor(){
			
			 var i = 0;

			 for(i = 0; i < totalCount ; i++){

				 var getFieldOn = GetFieldId(i);
				
				 getFieldOn.style.backgroundColor='#3333FF'; 

				 getFieldOn.className='';
			}
	}

	/*
		Function : addressDisplay(number)
		@param	 : number. 
		This function is used in edit contact detail for address fielsd.
	*/
	function addressDisplay(number){
			
			var fieldIdObj = GetFieldId('TEXT_ADDRESS1'+number+'');

			fieldIdObj.style.display = '';

			var fieldIdObj = GetFieldId('SPAN_ADDRESS1'+number+'');

			fieldIdObj.style.display = 'none';

			var fieldIdObj = GetFieldId('TEXT_ADDRESS2'+number+'');

			fieldIdObj.style.display = '';

			var fieldIdObj = GetFieldId('SPAN_ADDRESS2'+number+'');

			fieldIdObj.style.display = 'none';
			
			var fieldIdObj = GetFieldId('TEXT_CITY'+number+'');

			fieldIdObj.style.display = '';

			var fieldIdObj = GetFieldId('SPAN_CITY'+number+'');

			fieldIdObj.style.display = 'none';
			
			var fieldIdObj = GetFieldId('TEXT_STATE'+number+'');

			fieldIdObj.style.display = '';

			var fieldIdObj = GetFieldId('SPAN_STATE'+number+'');

			fieldIdObj.style.display = 'none';

			var fieldIdObj = GetFieldId('TEXT_ZIP'+number+'');

			fieldIdObj.style.display = '';

			var fieldIdObj = GetFieldId('SPAN_ZIP'+number+'');

			fieldIdObj.style.display = 'none';

			var fieldIdObj = GetFieldId('TEXT_COUNTRY'+number+'');

			fieldIdObj.style.display = '';

			var fieldIdObj = GetFieldId('SPAN_COUNTRY'+number+'');

			fieldIdObj.style.display = 'none';

			var fieldIdObj = GetFieldId('TEXT_COUNTRY'+number+'');

			fieldIdObj.style.display = '';

			var fieldIdObj = GetFieldId('SPAN_COUNTRY'+number+'');

			fieldIdObj.style.display = 'none';

			var fieldIdObj = GetFieldId('ID_ADDRESS_SELECT'+number+'');

			fieldIdObj.style.display = '';
			
			var fieldIdObj = GetFieldId('SPAN_LABEL_NAME'+number+'');

			fieldIdObj.style.display = 'none';

			var fieldIdObj = GetFieldId('SAVE_BUTTON'+number+'');

			fieldIdObj.style.display = '';

			var fieldIdObj = GetFieldId('DELETE_BUTTON'+number+'');

			fieldIdObj.style.display = '';

			var fieldIdObj = GetFieldId('ADD_PRIMARY'+number+'');

			fieldIdObj.style.display = '';			

			return false;
	}
	
	/*
		function setPipeFilterClass(CURRENT_LINK,CLASS_IMPOSE,CLASS_REMOVE,STR_TD_ID);

		@param	 : CURRENT_LINK.  : recognize click.

		@param	 : CLASS_IMPOSE.  : class for highlight.

		@param	 : CLASS_REMOVE.  : class for non highlight.

		@param	 : STR_TD_ID.	  : id of all filter links as a string.	
	*/
	
	 function setPipeFilterClass(CURRENT_LINK,CLASS_IMPOSE,CLASS_REMOVE,STR_TD_ID){
	
		var split = splitString(STR_TD_ID,'~');

		var splitLength = split.length;

		var i = 0;

		for( i = 0; i < splitLength; i++){

				if(split[i] == CURRENT_LINK){

						SetClass(CURRENT_LINK, CLASS_IMPOSE, null , null);

				}else{

						SetClass(split[i], CLASS_REMOVE, null , null);

				}
		}
			return false;
	}

	
	/*
		function setPipeTagClass(CURRENT_LINK,CLASS_IMPOSE,CLASS_REMOVE,STR_TD_ID);

		@param	 : CURRENT_LINK.  : recognize click.

		@param	 : CLASS_IMPOSE.  : class for highlight.

		@param	 : CLASS_REMOVE.  : class for non highlight.

		@param	 : STR_TD_ID.	  : id of all filter links as a string.	
	*/
	
	 function setPipeTagClass(CURRENT_LINK, CLASS_IMPOSE,CLASS_REMOVE,STR_TD_ID,ALL_TD){
			
			
			var split = splitString(STR_TD_ID,'~');
			
			var splitLength = split.length;

			var i = 0;
				
			if(ALL_TD == 'ALLTAGS'){
				
				SetClass('ALLTAGS', CLASS_IMPOSE, null , null);

			}else{
				
				SetClass('ALLTAGS', '', null , null);

			}

			for( i = 0; i < splitLength; i++){

				if(split[i] == CURRENT_LINK){
					
						SetClass(CURRENT_LINK, CLASS_IMPOSE, null , null);

				}else{

						SetClass(split[i], CLASS_REMOVE, null , null);

				}
			}

	 }
	 /*
		Function : displayWithCheck(fieldId, value ,displayFieldId)

		@param	 : fieldId - (id of the field to get value to compare).
		@param	 : value - (Value you nedd to compare).
		@param	 : displayFieldId Id - (id of the field you waht to display).

	*/

	 function displayWithCheck(fieldId, value , displayFieldId){
		  var getFieldValue = GetFieldValue(fieldId);
		   if(getFieldValue == value){
		   	display(displayFieldId);
			return false;
		  }else{
			  displayHide(displayFieldId);
		  }
		  return false;
	 }


	 /*
		Function : changeConnectImage(fieldId,imageName,ImagePath,hiddenFieldId)
	
	*/
	function changeConnectImage(fieldId,imageName,ImagePath,hiddenFieldId){
			
			 var getfieldId = GetFieldId(fieldId);	
				
			 if(imageName == 'dis_connected.gif'){

					document.getElementById(hiddenFieldId).value='TRUE';
					
					var imgParm = 'connected.gif';

					var actStatus = "Set activity as disconnect";

			 }else if(imageName == 'connected.gif'){

					document.getElementById(hiddenFieldId).value='FALSE';
					
					var imgParm = 'dis_connected.gif';

					var actStatus = "Set activity as connect";

			 }
			
			
			 getfieldId.innerHTML = "<img title = '"+actStatus+"' class = 'cursor' src='"+ImagePath+"/"+imgParm+"' onclick = \"changeConnectImage('TD_CONNECT','"+imgParm+"','"+ImagePath+"','hiddenConnectValue');\"/>";
	}

	function SUBMIT(idHiddenDeleteSet){
		
		SetFieldValue(idHiddenDeleteSet, 'deleteSet');

		document.ADDACTIVITY.submit();

	}

	function showForm(value){
		
		if(value == 0){
			
			display('HIDE_FORM');

		}else{

			displayHide('HIDE_FORM');

		}
	}

	// function for completed activity
	/*
		Function : checkedBoxDisHide(fieldId,displayField,hideField)

		@param	 : fieldId		- id of the check box.
		@param	 : displayField - id of the field you want to display.
		@param	 : hideField	- id of the field you want to hide.

		Note: Below function is used to show and haide two fields when click on a checkbox.

	*/

	function checkedCompleted(fieldId,displayField,hideField){

		

		var fieldIdObj = GetFieldId(fieldId);

		var checkValue = fieldIdObj.checked;

			if(checkValue == true){

				display(displayField);

				displayHide(hideField);	

				return true;

			}else{
				
				display(hideField);

				displayHide(displayField);	

				return false;

			}
	}
	
	// Function for press only Numeric values
	// ---> BEGIN
	
	function CalcKeyCode(aChar) {
	  var character = aChar.substring(0,1);
	  var code = aChar.charCodeAt(0);
	  return code;
	}
	
	function checkNumber(val) {
	  var strPass = val.value;
	  var strLength = strPass.length;
	  var lchar = val.value.charAt((strLength) - 1);
	  var cCode = CalcKeyCode(lchar);
	
	  /* Check if the keyed in character is a number
		 do you want alphabetic UPPERCASE only ?
		 or lower case only just check their respective
		 codes and replace the 48 and 57 */
	
	  if (cCode < 44 || cCode == 45 || cCode == 47 || cCode > 57 ) {
		var myNumber = val.value.substring(0, (strLength) - 1);
		val.value = myNumber;
	  }
	  return false;
	}
	
// Function for Valid File Name ;
	// BEGIN
	function CalcharKeyCode(aChar) {
		  var character = aChar.substring(0,1);
		  var code = aChar.charCodeAt(0);
		  return code;
		}
		
		function checkFileValidate(val){
		if(val){
			var strPass = val.value;
			var strLength = strPass.length;
			var lchar = val.value.charAt((strLength) - 1);
			var cCode = CalcharKeyCode(lchar);
			var t= new Array('"',"'","?",":","/","<",">","!","\\","|");
			for(i = 0; i < t.length; i++){
				if(strPass.indexOf(t[i])!=-1){			
					val.value=strPass.replace(t[i],"");
					break;
				}
			}
		}
		  
		//cCode != 47 || cCode != 92 || cCode != 58 || cCode != 34 || cCode != 42 || cCode != 63 || cCode != 124 || cCode != 60 || cCode != 62
		  //if ( cCode == 47 || cCode == 92 || cCode == 58 || cCode == 34 || cCode == 42 || cCode == 63 || cCode == 124 || cCode == 60 || cCode == 62 || cCode == 39) {
			//var myNumber = val.value.substring(0, (strLength) - 1);
			//val.value = myNumber;
		 // }
		  //return false;
		  
		}
	// END
	
// Function for enter and allow only Alphabates :
	// ---> BEGIN
	
	function checkValidUserName(val)
		{
		//alert(val.value);
		  var strPass = val.value;
		  var strLength = strPass.length;
		  var lchar = val.value.charAt((strLength) - 1);
		  var cCode = CalcharKeyCode(lchar);
	
		  /* Check if the keyed in character is a number
			 do you want alphabetic UPPERCASE only ? 
			 or lower case only just check their respective
			 codes and replace the 48 and 57 */
		
		 // if ( (cCode > 122 || cCode < 97) && (cCode > 90 || cCode < 65) ) {
		  if ( cCode == 33  || cCode == 34 || cCode == 35 || cCode == 36 || cCode == 37 || cCode == 38 || cCode == 39 || cCode == 42 || cCode == 94 || cCode == 124 || cCode == 92 || cCode == 47 || cCode == 126 || cCode == 63 ) {
			var myNumber = val.value.substring(0, (strLength) - 1);
			val.value = myNumber;
		  }
		  return false;
		}
	
	

	// This function is used to check a valid url
	 function checkValidURL(value){
			// Change to make www.acme.com.au a valid url
	 		//var goodurl =value.match("^((http:\/\/www\.|https:\/\/www\.|ftp:\/\/|www\.|www\.)([a-zA-Z0-9]+)(\.[a-zA-Z]{2,3}))$");

var urlregex = new RegExp("^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.|http:\/\/|https:\/\/|ftp:\/\/){1}([0-9A-Za-z]+\.)");
 			 if(urlregex.test(value))
			  {
					return true;
		  	 }
			 else{
					return false;
			 }
	 }
	// ---> END
	
	
/*
	Below function is used for browser detection 
*/	
	function detectBrowser(){
		if (navigator.appName == "WebTV") {
			return "WebTV";
		}
		if (navigator.appName == "Netscape") {
			return "Netscape";
		}
		if (navigator.appName == "Microsoft Internet Explorer") {
			return "IE";
		}
	}
	
	
/*	
	This function is a part of getFormElement(FORM_NAME) function. 
	if your element type is not defined create a case for it and use event for it
	E.g. onkeypress is used for text.
	author: Sachin Agarwal 
	Date 02-03-2009
*/	

	function checkElementType(FORM_NAME,LOOP_VALUE){
		var BROWSER_NAME = detectBrowser(); // get browser name from detectBrowser() function defind above. 
		var elementType = FORM_NAME.elements[LOOP_VALUE].type;	// get type of element.		
		var elementId = FORM_NAME.elements[LOOP_VALUE].id; // get id of element.
		switch(elementType)
			{
			case 'text': // if element is a textbox.
				if(BROWSER_NAME == 'IE'){
					// if browser is IE use attachEvent.
					// setDirty is a function used when a key is pressed. 
					document.getElementById(elementId).attachEvent("onkeypress",setDirty);
					document.getElementById(elementId).attachEvent("onchange",setDirty);
				}else{
					// for other browser use setAttribute.
					// setDirty is a function used when a key is pressed.
					document.getElementById(elementId).setAttribute("onkeypress", "setDirty()");
					document.getElementById(elementId).setAttribute("onchange", "setDirty()");
				}
				break;    
			case 'select-one': // if element is a drop down.
				if(BROWSER_NAME == 'IE'){
					document.getElementById(elementId).attachEvent("onchange",setDirty);
				}else{
					//document.getElementById(elementId).setAttribute("onchange", "setDirty()");
					document.getElementById(elementId).addEventListener("click", setDirty,false);
					//'click',doSomething,false
				}
				break;
				case 'checkbox': // if element is a checkbox.
				if(BROWSER_NAME == 'IE'){
					document.getElementById(elementId).attachEvent("onchange",setDirty);
				}else{

					document.getElementById(elementId).setAttribute("onchange", "setDirty()");
				}
				break;
			case 'textarea': // if element is a textarea.
				if(BROWSER_NAME == 'IE'){
					document.getElementById(elementId).attachEvent("onkeypress",setDirty);
				}else{
					document.getElementById(elementId).setAttribute("onkeypress", "setDirty()");
				}
				break;
			case 'radio': // if element is a textarea.
				if(BROWSER_NAME == 'IE'){
					document.getElementById(elementId).attachEvent("onchange",setDirty);
				}else{
					document.getElementById(elementId).setAttribute("onchange", "setDirty()");
				}
				break;
			case 'password': // if element is a textarea.
				if(BROWSER_NAME == 'IE'){
					document.getElementById(elementId).attachEvent("onchange",setDirty);
				}else{
					document.getElementById(elementId).setAttribute("onchange", "setDirty()");
				}
				break;				
			default:
				//alert("default");
			  //default code;
			}
	}
	
	/*
		// THIS FUNCTION IS USED TO SET ATTRIBUTE ON PAGE LOAD.
		// @param: form name.
	*/
	function getFormElement(FORM_NAME){
	
		//alert(FORM_NAME);
		if(FORM_NAME){
			var totalElement = FORM_NAME.elements.length; // Get no of elements in a page.
			//alert(totalElement);
			var i = 0;
			for(i=0; i<totalElement; i++){
				//alert(i);
				checkElementType(FORM_NAME,i); // Call checkElementType defind above.
			}
		}
	}

	/*
	*/
	function checkDirtyRedirect(HTTP_PATH,REDIRECT_PAGE_NAME){
		if(dirty == 'NO'){
			var path = HTTP_PATH+REDIRECT_PAGE_NAME;
			//alert(path);	
			location.replace(path);
		}else{
		//alert("Yes");
			document.getElementById('SHOW_PROMPT').innerHTML="You have unsaved changes in this section. Please save.";	
		}
	}
	
	function hidePrompt(){
		document.getElementById('SHOW_PROMPT').innerHTML="";	
	}
	
	/*
	*/
	function addContactInnerHtml(TD_ID,HTTP_PATH,REDIRECT_PAGE_NAME){
		
		if(document.getElementById(TD_ID)){
			document.getElementById(TD_ID).innerHTML="<a href='javascript:void(0)' onclick = \"showDirtyPrompt('"+HTTP_PATH+"','"+REDIRECT_PAGE_NAME+"','')\" title='Add Contacts'>+</a>";
		}
	}

	function searchInnerHtml(TD_ID,IMG_PATH,IMG_NAME,REDIRECT_PAGE_NAME,HTTP_PATH){
		var image = IMG_PATH+IMG_NAME;		
		if(document.getElementById(TD_ID)){
			document.getElementById(TD_ID).innerHTML="<a href='javascript:void(0)' onclick = \"showDirtyPrompt('"+HTTP_PATH+"','"+REDIRECT_PAGE_NAME+"','')\" title='Add Contacts'><img src = '"+image+"' border = '0'></a>";
		}		
	}
	
			
	/*
	*/
	function editDetailDoneCheck(HTTP_PATH,CONTACT_ID){
		if(dirty == 'NO'){
			var path = HTTP_PATH+"/contactRecord.php?contactId="+CONTACT_ID;
			parent.parent.location.replace(path);
		}else{
			document.getElementById('SHOW_PROMPT').innerHTML="You have unsaved changes in this section. Please save or cancel.";
			return false;
		}
	}
	/*
		Below function is used to add a new custom label for a contact.
	*/
	
	function addLabelWin(value,NEW_LABEL_TR_ID){
	//alert(value);
	//alert(NEW_LABEL_TR_ID);
		var value;
		if(value == 'addNew'){
		
			display(NEW_LABEL_TR_ID);
		}
	}
	
	
	/*
		Below function is used to show connect icon 
	*/
		function showConnectIcon(VALUE,CONNECT_ICON_TR,CONNECT_HIDDEN_ID){
			if((VALUE == 1) || (VALUE == 5) || (VALUE == 6)){
				display('CONNECT_ICON_TR');
				document.getElementById(CONNECT_HIDDEN_ID).value='';
			}else{
				displayHide('CONNECT_ICON_TR');
				document.getElementById(CONNECT_HIDDEN_ID).value='';
			}
		}
	
	
	function checkAddNewPresetNote(NoteFieldId,idACTIVITYTYPE,checkAdd){
			if(checkAdd == 'yes'){
					var preSetValue = document.getElementById(idACTIVITYTYPE).value;
					//alert(preSetValue);
					if(preSetValue == "addnew"){
					//alert("add new");
							var getNote = document.getElementById(NoteFieldId).value;
							//var getNote = GetFieldValue(NoteFieldId);
								if(trim(getNote) == ''){
								//alert("checkNOte");
									SetClass(NoteFieldId,'field-errorReq_200px', null, null);
									//alert("Yes");
									return false;
								}else{
									document.EDIT_LOOGED_ACTIVITY.submit();
									return true;
								}
					}else{
						document.EDIT_LOOGED_ACTIVITY.submit();
						return true;
					}
			}	
						
	}
	function checkValidEdit(){
				var dateVal = GetFieldValue('idCompletedOn');
					if(trim(dateVal) == '') {
						SetClass('idCompletedOn','errorFieldsReq_100px', null , null);
						return false;
					}else{
						document.EDIT_LOOGED_ACTIVITY.submit();
						return true;
					}
					//EDIT_LOOGED_ACTIVITY
					}
					
					
	
	function setTagClass(ALL_SPANS,CLICKED_SPAN,ALL_CLICKED_ID){
	//alert(ALL_SPANS);
	//alert(CLICKED_SPAN);
		var totalSpan = splitString(ALL_SPANS,'~');
		var length = totalSpan.length;
		var i = 0;
		var getElementObj
		if(CLICKED_SPAN == ''){
				getElementObj = GetFieldId(ALL_CLICKED_ID);
				getElementObj.setAttribute("class", "left_table_tag_cloud_on");
		}else{
				getElementObj = GetFieldId(ALL_CLICKED_ID);
				getElementObj.setAttribute("class", "left_table_tag_cloud_off");
		}
		for(i=0; i<length; i++){
			if(totalSpan[i] == CLICKED_SPAN){
				getElementObj = GetFieldId(CLICKED_SPAN);
				getElementObj.setAttribute("class", "left_table_tag_cloud_on");
			}else{
				getElementObj = GetFieldId(totalSpan[i]);
				getElementObj.setAttribute("class", "left_table_tag_cloud_off");
			}
		}
	}
	
	/*
	*/
	function checkDirtyRe(HTTP_PATH,REDIRECT_PAGE_NAME){
		if(dirty == 'NO'){
			var path = HTTP_PATH+REDIRECT_PAGE_NAME;
			//alert(path);	
			parent.parent.location.replace(path);
		}else{
			document.getElementById('SHOW_PROMPT').innerHTML="You have unsaved changes in this section. Please save.";	
			return false;
		}
	}
	
	/*
		Date filter dd
	*/
	
	function showDropDown(value,month){
		
		if(value == 'TP'){
			display('ID_PERIOD_DD');
			displayHide('ID_SEC_DD');
		}else{
			var monArg = month+'_month';
			display('ID_SEC_DD');
			displayHide('ID_PERIOD_DD');
			fetchRecord(monArg);
		}
	}
	
	/*Function for  customize label*/
	function checkDisplay(id){
		var fieldId = GetFieldId(id);
		var checkDisplay = fieldId.style.display;
		if(checkDisplay == 'none'){
			display(id);
		}else{
			displayHide(id);
		}
	}
	
	/*This function is used to manage add more link in customize::importContact section*/
	
	function manageAddMore(tableId,linkId){
		display(tableId);
		document.getElementById(linkId).innerHTML="<span  class='cc_bg1_blue_text1 cursor' onclick=\"addRow();return false;\" >Add custom field and value for all contact</span>";	
	}
	

	/*
		Below function is used to open a popup to show prompt
		when user leaves a section without saving changes.
		Sachin:13-04-2009
	*/
	function showDirtyPrompt(HTTP_PATH,REDIRECT_PAGE_NAME,FROM_DIRTY){
		if(FROM_DIRTY == 'Yes'){
			dirty = 'NO';
		}else if(FROM_DIRTY == 'SearchDiv'){
			dirty = 'search';
		}else if(FROM_DIRTY == 'addContact'){
			dirty = 'ADDCONTACT';
		}
		if(dirty == 'NO'){
			dirty = 'NO';
			var path = HTTP_PATH+REDIRECT_PAGE_NAME;
//			alert($(this)[0].location);
//			var iframe = $(top.document.body).find('iframe');
//			if (iframe.length > 0){
//				iframe.attr('src', path);
//			}else{
				this.location.replace(path);
//			}
		}else if(dirty == 'search'){
			dirty = 'NO';
			parent.parent.GB_hide('','');
			parent.parent.showSearchDiv();
		}else if(dirty == 'ADDCONTACT'){
			dirty = 'NO';
			var AddContactPage = HTTP_PATH+"/addContact.php";
			//self.location = AddContactPage;
			parent.parent.GB_hide('',AddContactPage);
		}
		else{
			var dirtyPage = HTTP_PATH+"/Templates/customize/htmlDirtyPrompt.php?fromPage="+REDIRECT_PAGE_NAME;
			GB_showCenter('',dirtyPage,400,350);
		}
	}
	
	function changeActivityImage(YES,TYPE,SPAN_ID,IMG_NAME,CURRENT_IMAGE,IMG_PATH){
			
			 var newType = splitString(TYPE,"_");
			 var newTypeLength = newType.length;
				if(YES == 'N'){
					YES = 'P';
					TYPE = YES+"_"+newType[newTypeLength-1];
				}else{
					YES = 'N';
					TYPE = YES+"_"+newType[newTypeLength-1];
				}
			var getfieldId = GetFieldId(SPAN_ID);
			getfieldId.innerHTML = "<img class = 'cursor' src='"+IMG_PATH+"/"+IMG_NAME+"' onclick = \"fetchRecord('','','','"+TYPE+"','');changeActivityImage('"+YES+"','"+TYPE+"','"+SPAN_ID+"','"+CURRENT_IMAGE+"','"+IMG_NAME+"','"+IMG_PATH+"');\"/>";	
	}
	
	function changeOnShowAll(IMG_PATH){
			
			var typeArray = new Array('1','2','3','4','7','5','6','8','9','10');
			var spanIdArray = new Array('obCall','inbCall','obEmail','inbEmail','poemail','meeting','net_meet','task','goal','note');
			var currentImageArray = new Array('/outbondcall_deactive.gif','/outbondcall_deactive-02.gif','/outbondemail_deactive.gif','/inbondemail_deactive.gif','/postalmail_deactive.gif','/messanger_deactive.gif','/netmeeting_deactive.gif','/send_deactive.gif','/goal_deacyive.gif','/note_deactive.gif');
			var imageNameArray = new Array('/outbound_call.png','/inbound_call.png','/outbound_email.png','/inbound_email.png','/postal_mail.png','/messager_icon.gif','/net_meeting.png','/send_icon.gif','/goal.png','/note.png');
			var i=0;
			for(i=0;i<10;i++){
				var getfieldId = GetFieldId(spanIdArray[i]);
				var TYPE = "P_"+typeArray[i];
				var YES = "P";
				//alert("<img class = 'cursor' src='"+IMG_PATH+"/"+imageNameArray[i]+"' onclick = \"fetchRecord('','','','"+TYPE+"','');changeActivityImage('"+YES+"','"+typeArray[i]+"','"+spanIdArray[i]+"','"+currentImageArray[i]+"','"+imageNameArray[i]+"','"+IMG_PATH+"');\"/>");
				getfieldId.innerHTML = "<img class = 'cursor' src='"+IMG_PATH+"/"+imageNameArray[i]+"' onclick = \"fetchRecord('','','','"+TYPE+"','');changeActivityImage('"+YES+"','"+typeArray[i]+"','"+spanIdArray[i]+"','"+currentImageArray[i]+"','"+imageNameArray[i]+"','"+IMG_PATH+"');\"/>";	
		}
	}
	
	
	/*
		Below function is used to show border
		when user wants to see a report.
		Agnivesh:21-04-2009
	*/
	
				function changeBorder(fieldId,count)
				{
					//alert('hello');borderSet_6
					for(var i = 0; i < count; i++)
					{
						var borderSet = 'borderSet'+i;
						if(fieldId  == borderSet)
						{
							SetClass(fieldId,'lightboldouterbordercategory',null, null);
						}
						else
						{
							SetClass(borderSet,'',null, null);
						}
						
					}
					
				}	
				
	/*
		Below function is used to change the nacheckBoxHiddenValueme of the check box
		when user change values of drop down of vision fields. 
		Sachin:29-04-2009
	*/		
	
	function changeChkBoxName(replaceId,guessName,idhidden,checkBoxId,valueI){
		
		var newReplaceId = "td_".replaceId; 	
		//alert("<input type = 'hidden' name='checkBoxName[]["+guessName+"]' id='idHiddenCheckBox"+valueI+"' value='Yes'><input type = 'checkbox' name = 'checkBoxName[]["+guessName+"]' checked value = 'Yes' onclick=\"checkBoxHiddenValue("+idhidden+","+checkBoxId+");\" id = 'id_"+guessName+"'>");
		if(guessName == 'First Name'){
			var disabled = "disabled";
		}else{
			var disabled = "";
		}
		document.getElementById(replaceId).innerHTML="<input type = 'hidden' name='checkBoxName[]["+guessName+"]' id='idHiddenCheckBox"+valueI+"' value='Yes'><input type = 'checkbox' name = 'checkBoxName1[]["+guessName+"]'"+disabled+"'checked value = 'Yes' onclick=\"checkBoxHiddenValue('"+idhidden+"','id_"+guessName+"','"+guessName+"');\" id = 'id_"+guessName+"'>";		
	}

	function checkBoxHiddenValue(idhidden,checkBoxId,NewName){
				
			var getCheckBox = GetFieldId(checkBoxId);
			var isChecked = getCheckBox.checked;
			var fieldObj = GetFieldId(idhidden);
			
			if(isChecked == true){
			  	fieldObj.value="Yes";
				fieldObj.name="checkBoxName[]["+NewName+"]";
			}if(isChecked == false){
			  	fieldObj.value="No";
				fieldObj.name="checkBoxName[]["+NewName+"]";
			}
	}
	
	function ckeckPrimary(idhidden,checkBoxId,Name,loopValue){
			/*alert(idhidden);
			alert(checkBoxId);
			alert(checkBoxId);*/
			//alert(checkBoxId);
			var getCheckBox = GetFieldId(checkBoxId);
			var isChecked = getCheckBox.checked;
			var fieldObj = GetFieldId(idhidden);
			/*alert(getCheckBox);
			alert(isChecked);
			alert(fieldObj);*/
			if(isChecked == true){
			  	fieldObj.value="TRUE";
				fieldObj.name="checkBoxPrimary[]["+Name+"]";
				fieldObj.id="hiddenCheckPrimary"+loopValue;
			}if(isChecked == false){
			  	fieldObj.value="FALSE";
				fieldObj.name="checkBoxPrimary[]["+Name+"]";
				fieldObj.id="hiddenCheckPrimary"+loopValue;		
			}
	}
	

	function showPrimary(checkBoxTd,newValue,guessName,loopValue){
		/*alert(checkBoxTd);	
		alert(newValue);
		alert(guessName);
		alert(loopValue);*/
		
		//if(newValue == 'Phone' || newValue == 'Email' || newValue == 'Website' || newValue == 'Address' || newValue == 'City' || newValue == 'State' || newValue == 'Postal Code'){
		if(newValue == 'Phone' || newValue == 'Email'){	
			//alert("<input type='hidden' name = 'checkBoxPrimary[]['"+newValue+"]' value = 'TRUE' id = 'hiddenCheckPrimary"+loopValue+"'>");
			//alert("<input type = 'checkbox' name = 'checkBoxPrimary1[]['"+guessName+"]' id = 'idprimarycheck"+loopValue+"' checked  onclick=\"ckeckPrimary('hiddenCheckPrimary"+loopValue+"','idprimarycheck"+loopValue+"','"+guessName+"')\">");

			document.getElementById(checkBoxTd).innerHTML="<input type='hidden' name = 'checkBoxPrimary[]["+newValue+"]' value = 'TRUE' id = 'hiddenCheckPrimary"+loopValue+"'><input type = 'checkbox' name = 'checkBoxPrimary1[]['"+guessName+"]' id = 'idprimarycheck"+loopValue+"' checked  onclick=\"ckeckPrimary('hiddenCheckPrimary"+loopValue+"','idprimarycheck"+loopValue+"','"+guessName+"')\">";
		}else{
			//alert("<input type='hidden' name = 'checkBoxPrimary[]["+newValue+"]' value = 'FALSE' id = 'hiddenCheckPrimary"+loopValue+"'>");
			document.getElementById(checkBoxTd).innerHTML="<input type='hidden' name = 'checkBoxPrimary[]["+newValue+"]' value = 'FALSE' id = 'hiddenCheckPrimary"+loopValue+"'>";
		}
	}



function keyHandler(e) {
	var key;
        if( !e ) {
			//if the browser did not pass the event information to the
			//function, we will have to obtain it from the event register
			if( window.event) {
				//Internet Explorer
				e = window.event;
			}
		  }
		
        if (e.keyCode)
		key = e.keyCode;
	
	 if(key == 27){
		   if(window.parent.frames.length!=0){                  
			parent.parent.GB_hide('','');
			}
        
           	    }
}
   document.onkeypress = keyHandler;


//Change action menu background
	function changeActionBAckground(idString,currentId){
		var getString = splitString(idString,'_');
		var stringLength = getString.length;
		
		for(i=0;i<stringLength;i++){
			if(currentId == getString[i]){
			   SetClass1(currentId,'left_part_links1_active');
			}else{
			  SetClass1(getString[i],'left_part_links1');	
			}
		}
	}

// Set Default Preset value :
	function defaultPreset(SelectPresetID, comPresetID, displayActivityID,ADDNEW){					
		if(document.getElementById(SelectPresetID).checked){						
			var presetValue = document.getElementById(comPresetID).value;						
			if(presetValue == ADDNEW){
				//alert(presetValue);
				display(displayActivityID);
			}						
		}
	}

// Function for set Iframe Height Dynamically :
	function setAddCancelHeight(action,height){
		var frameNew = parent.document.getElementById('GB_frame').offsetHeight;
		// alert("new frame==="+frameNew);
		//alert("old frame==="+frame);
		//alert("Height==="+height);	
		if(action == 'open'){	
			var newWindowHeight = frameNew+height;
		}else if(action == 'edit'){	
			var newWindowHeight = frameNew+height;
		}else{
			var calcelHeight = (frameNew-frame);
			//alert("calcelHeight===="+calcelHeight);
			if(calcelHeight == 0){
				var newWindowHeight = frame-calcelHeight;
			}else{
				//alert(frameNew-calcelHeight);
				var newWindowHeight = frameNew-height;
			}
		}	
		//alert(newWindowHeight);
		parent.setupOuterGB(newWindowHeight);
	}
		
	function returnObject(obj){
		return (obj.parent.parent == top) ? obj : obj.parent.parent;
	}
	
	function getMainForm(curElement) {
		var foo = $(curElement).parents('form');
		var thfrm = null;
		if (foo.length > 0) {
			thfrm = foo.eq(0)[0];
		}
		return thfrm;
		                                          
	}