/******************************************
Module name : Js Function file
Parent module : None
Date created : 17th October 2007
Date last modified : 24th October 2007
Author :  Vineet Kumar
Last modified by : Vineet Kumar
Comments : The functions_js.js file contains various functions related to the web directory project.
******************************************/	

/******************************************
Function name : toggleOption
Return type : None
Date created : 
Date last modified : 
Author : 
Last modified by :
Comments : Function will toggle the select all checkbox option.
User instruction : toggleOption(spanChk)
******************************************/

function toggleOption(spanChk)
{
	
	var xState=spanChk.checked;
	var theBox=spanChk;

	elm=theBox.form.elements;
	
	for(i=0;i<elm.length;i++)
	{
		if(elm[i].type=="checkbox" && elm[i].id!=theBox.id)
		{
			if(xState == false)
				elm[i].checked = false;
			else
				elm[i].checked = true;
		}
	}
}


/*****************************
Function name : checkCapsLock
Return type : none
Date created : 5th January 2008
Date last modified : 5th January 2008
Author : Vineet Kumar
Last modified by : Vineet Kumar
Comments : This function is used to display alert message when caps lock is on.
User instruction : checkCapsLock( e , FieldID) 
************************************/
function checkCapsLock(e , FieldID) 
{
	var myKeyCode=0;
	var myShiftKey=false;
	var myMsg='Caps Lock is ON.\n\nTo prevent entering your password incorrectly,\nYou should press Caps Lock to turn it OFF.';

	// Internet Explorer 4+
	if ( document.all ) {
		myKeyCode=e.keyCode;
		myShiftKey=e.shiftKey;

	// Netscape 4
	} else if ( document.layers ) {
		myKeyCode=e.which;
		myShiftKey=( myKeyCode == 16 ) ? true : false;

	// Netscape 6
	} else if ( document.getElementById ) {
		myKeyCode=e.which;
		myShiftKey=( myKeyCode == 16 ) ? true : false;

	}
	
	if(document.getElementById(FieldID).value.length==0) {

		// Upper case letters are seen without depressing the Shift key, therefore Caps Lock is on
		if ( ( myKeyCode >= 65 && myKeyCode <= 90 ) && !myShiftKey ) {
			alert( myMsg );
			//return;
	
		// Lower case letters are seen while depressing the Shift key, therefore Caps Lock is on
		} else if ( ( myKeyCode >= 97 && myKeyCode <= 122 ) && myShiftKey ) {
			alert( myMsg );
		//	return;
		}
		return false;
	}
}

/******************************************
Function name : showSearchBox
Return type : None
Date created : 
Date last modified : 
Author : 
Last modified by : 
Comments : Function is used to show hide the seacch box
User instruction : showSearchBox()
******************************************/
function showSearchBox(varDocumentID,varShow)
{
	if(varShow == 'show')
	{
	 document.getElementById(varDocumentID).style.display = '';	
	}
	else
	{
	  document.getElementById(varDocumentID).style.display = 'none';
	}
	
}
/******************************************
Function name : checkUserName
Return type : None
Date created : 5th January 2008
Date last modified : 5th January 2008
Author : Vineet Kumar
Last modified by : Vineet Kumar
Comments : Function is used to login check using ajax.The ajax login check is a combination of functions all are using to check login system.
User instruction : checkUserName()
******************************************/
/* AJAX LOGIN CHECK CODE START FROM HERE */
function checkUserName() 
{
	var alphaNum = /^[0-9a-zA-Z_@.]+$/;
	var Usermail = document.getElementById('frm_login').frmAdminUserName.value;
	var charArray = new Array();
	var tString = "";
	for(i = 0; i < Usermail.length; i++) 
	{
		charArray[i] = Usermail.charAt(i);
	}

	for(i = 0; i < charArray.length; i++) 
	{
		if (charArray[i].match(alphaNum))
		{
			tString += charArray[i];
		}
	}	
	
	if (tString != "")
	{
		checkUserEmail(tString);
	}	
}
 
function checkUserEmail(mailID)
{ 
	doAjax('ajax_act.php','type=signUp&userEmail='+mailID,'showUserEmail','GET');
}
 
function showUserEmail(item)
{	
	if(item)
	{
		document.getElementById('showUserName').style.display = 'none';	
	}
	else
	{
		document.getElementById('showUserName').style.display = 'inline';
	}
}


/*****************************
Function name : validateAdminForm
Return type : integer
Date created : 5th January 2008
Date last modified : 5th January 2008
Author : Vineet Kumar
Last modified by : Vineet Kumar
Comments : This is used to check admin login authentications.
User instruction : validateAdminForm(charToCheck)
************************************/
function validateAdminLogin(formname)
{
	if(validateForm(formname,'frmAdminUserName','Username','R', 'frmAdminPassword','Password','R'))
	{	
		return true;
	} 
	else 
	{
		return false;
	} 
}

/*****************************
Function name : validateAdminForgotPassword
Return type : none
Date created : 5th January 2008
Date last modified : 5th January 2008
Author : Vineet Kumar
Last modified by :Vineet Kumar
Comments : This function is used to validate forgot password form.
User instruction : validateAdminForgotPassword(formname)
************************************/
function validateForgotPassword(formname)
{
	if(validateForm(formname,'frmUserName','Username (E-mail) ','RisEmail','frmSecurityCode','Verification code','R'))
	{	
		return true;
	} 
	else 
	{
		return false;
	} 
}

/******************************************
Function name : checkPhone
Return type : boolean
Date created :
Date last modified : 
Author : 
Last modified by : 
Comments : Function will return the true or false according to phone field validation
User instruction : checkPhone(phone)
******************************************/
function checkPhone(phone)
{
	var phoneRequired = /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,3})|(\(?\d{2,3}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/
	if(!phoneRequired.test(phone))
		return false;
	return true;
}

/******************************************
Function name : getMasterString
Return type : boolean
Date created : 
Date last modified : 
Author : 
Last modified by : 
Comments : Function will return the main string
User instruction : getMasterString()
******************************************/
function getMasterString()
{
	return "Sorry, we can not complete your request.\nKindly provide us the missing or incorrect information enclosed below.\n";
}

/******************************************
Function name : checkError
Return type : boolean
Date created : 
Date last modified : 
Author :
Last modified by :
Comments : Function will return the true or false acording to form validation
User instruction : checkError(error)
******************************************/
function checkError(error)
{
	var flag=false;
	var MasterString = getMasterString();
	
	if(error != "")
	{
		MasterString = MasterString + error;
		flag=true;
	}
	
	if(flag == true)
	{
		alert(MasterString);
		return false;
	}
	else
		return true;
}

/******************************************
Function name : askConfirm
Return type : boolean
Date created : 
Date last modified : 
Author : 
Last modified by :
Comments : Function will return the true or false after asking for confirmation
User instruction : askConfirm(type)
******************************************/
function askConfirm(type)
{	
	var sen = "Are you sure you want to "+type+"?";
	if(confirm(sen))
		return true;
	else
		return false;
}

/******************************************
Function name : validator
Return type : boolean
Date created : 
Date last modified : 
Author : 
Last modified by : 
Comments : Function will return the true or error message after validating checkboxes
User instruction : validator(btnType)
******************************************/
var btnType;
function validator(btnType,formname)
{
	
	var obj = formname;
	var error="", flagCheck=0;
	
	var len = obj.elements.length; 
	var i=0;
	for(i=0;i<len;i++) 
	{
		if(obj.elements[i].type=='checkbox')
		{
			if(obj.elements[i].checked)
			{
				//if(btnType == 'Delete')
					return askConfirm(btnType);
				//else
					//return true;
			}
			else
				flagCheck = 1;
		}
	}
	
	if(flagCheck == 1)
		error += "\n - Please select at least one record.";
			
	return checkError(error);
}

/*****************************
Function name : dateCompare
Return type : boolean
Date created : 
Date last modified : 
Author : 
Last modified by :
Comments : This function is used to validate the date compare form and to date.[ From date should be less than to date. ]
User instruction : dateCompare(formname)
************************************/
function dateCompare(formname)
{
	
		   var sliptdate	= document.getElementById(formname).frmTodate.value.split("-");
		   var FromDate  = document.getElementById(formname).frmDate.value.split("-");
			/*********************** From Date *****************/
			var TY = FromDate[0];  //Year
			var TM = FromDate[1];  //Month
			var TD = FromDate[2];  //Date
			/******************* To Date *********************/
			var sY=sliptdate[0];  //Year
			var sM=sliptdate[1];  //Month
			var sD=sliptdate[2];  //Date
			
		if(document.getElementById(formname).frmDate.value != 'From' && document.getElementById(formname).frmTodate.value != 'To')
		{

			if(sY<TY ) {
				
				alert("'To' date should be greater than 'From' date.");
				return false;	  
			}
			else if(sM==TM && sD<TD && sY==TY) { 

				alert("'To' date should be greater than 'From' date.");
				return false;
				
			}
			else if(sM<TM && sY==TY) { 

				alert("'To' date should be greater than 'From' date.");
				return false;
				
			}
		}
	
}

/******************************************
Function name : validator
Return type : boolean
Date created : 
Date last modified : 
Author : 
Last modified by : 
Comments : Function will return the true or error message after validating checkboxes
User instruction : validator(btnType)
******************************************/
function validateForm() 
{ 
	var i,p,q,nm,test,num,min,max,errors='',args=validateForm.arguments;
	j=0;
	
	var regEmail = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
	var regBlank = /[^\s]/;
	
	var regSpace = /^([a-zA-Z0-9_#@!]+)$/;
	
	var regAlphaNum = /^([a-zA-Z0-9_#@]+)$/;
	 var regDate = /^([0-9_]+-[0-9][0-9]+-[0-9][0-9]+)$/; 
  	 var regChar = /^([a-zA-Z]+)$/;
	 var regNumeric = /^([0-9]+)$/; 
	// var regDecimal = /^([0-9]+|(\.?)[0-9]+)$/;
	var regDecimal = /^([0-9]+\.?[0-9]+)$/;
	
	for (i=1; i<(args.length-2); i+=3) 
	{	
		mesg=args[i+1];
		test=args[i+2]; 
		val=document.forms[""+args[0]].elements[""+args[i]];
		
		if (val) 
		{	
			
			nm=mesg; 
			noVal = val;
			val = val.value;
			if(regBlank.test(val))
			{
				if(test.indexOf('isEqual')!=-1)
				{
					result = trim(val);

					if(result.length==0)
					{
											
					errors += '- '+nm+' is required.\n'; 
					}
					else
					{
					equal_obj_val = test.substring(8,test.indexOf(":"));
					mesg_string =test.substring((test.indexOf(":")+1));

						if(val != document.forms[""+args[0]].elements[""+equal_obj_val].value)
						{ 
							errors+='- '+nm+' and '+mesg_string+' must be same.\n';
						}
					}
				}
				else if(test.indexOf('isAlphaNum')!=-1)
				{
					result = trim(val);
					if(result.length==0){
					errors += '- '+nm+' is required.\n'; 
					}else{
						if(!regAlphaNum.test(val))
						{
							errors += '- '+nm+' is not valid.\n';
						}
					}
				
				}
				else if(test.indexOf('isNumeric')!= -1)
				{
						if(!regNumeric.test(val))
						{
							errors += '- '+nm+' must contain a numeric value.\n';
							
						}
				}
				else if(test.indexOf('isDecimal') != -1)
				{
					
					if(!regDecimal.test(val))
					{
						errors += '- '+nm+' must contain a number.\n';
					}
				}
				else if(test.indexOf('isSpace')!=-1)
				{
					result = trim(val);
					
					if(result.length==0)
					{
						errors += '- '+nm+' is required.\n'; 
					}
					else
					{
						if(!regSpace.test(val))
						{
							errors += '- '+nm+' is not valid.\n';
						}
					}
				}
				else if (test.indexOf('isEmail')!=-1) 
				{ 
					p=val.indexOf('@');
					s=val.indexOf('.');
			        if (p<1 || p==(val.length-1))
					{
						errors+='- '+nm+' must contain an e-mail Address.\n';
		
					}
					else if(!regEmail.test(val))
					{
						errors+='- '+nm+' must contain a valid e-mail Address.\n';
					}
			     }
				else if (test.indexOf('isUrl')!=-1) 
				{ 
					p=val.indexOf('http://');
					s=val.indexOf('.');
			        if (p<0 || p==(val.length-1))
					{
						errors+='- '+nm+' must be valid URL e.g. http://www.abc.com\n';
		
					}
					else if(s<p || s==(val.length-1))
					{
						errors+='- '+nm+' must be valid URL e.g. http://www.abc.com\n';
					}
			     }
				else if (test.indexOf('isChar')!=-1) 
				 { 
					var first_char;
					
					if(val.match(regChar)==null)
					{
					 	errors+='- '+nm+' must contain a character.\n';
					}
			     }
				else if(test.indexOf('isCheckbox')!=-1)//Check is check box is not checked generate error
				{	
					var valueCheckbox = noVal.checked;
					if(!valueCheckbox)
					{
						errors+='- '+' Accept terms and Policy.\n';
					}
				}
				else if (test.charAt(0)=='R')
				{
					result = trim(val);
					if(result.length==0){
						
					errors += '- '+nm+' is required.\n'; 
					}
				} 
			
		}
		else if (test.charAt(0)=='R')
		{
			result = trim(val);
				if(result.length==0){
					
				errors += '- '+nm+' is required.\n'; 
				}
		}
		
		if(errors !="")
		{	if(j<=0)
			{
				focusitem = document.forms[""+args[0]].elements[""+args[i]];
				j++;
			}	
		}
		}
		
	} 
	
  if (errors)
  {
	var MasterString = getMasterString();
	alert(MasterString+'\n'+errors);
	focusitem.focus();
	return false;
   }
   else
	return true;

  document.MM_returnValue = (errors == '');
}

/******************************************
Function name : stripHTML
Return type : string
Date created : 
Date last modified : 
Author : 
Last modified by : 
Comments : Function will return the main string after removing HTML tags
User instruction : stripHTML(str)
******************************************/
function stripHTML(str){
      var re= /<\S[^><]*>(&nbsp;)*/g ;
      return str.replace(re, "") ;
}
/******************************************
Function name : ltrim
Return type : string
Date created : 
Date last modified : 
Author : 
Last modified by : 
Comments : Function will return the main string after removing white spaces from the left
User instruction : ltrim(str)
******************************************/
function ltrim(str) { 
	for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
	return str.substring(k, str.length);
}
/******************************************
Function name : rtrim
Return type : string
Date created : 
Date last modified : 
Author : 
Last modified by : 
Comments : Function will return the main string after removing white spaces from the right
User instruction : rtrim(str)
******************************************/
function rtrim(str) {
	for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
	return str.substring(0,j+1);
}
/******************************************
Function name : trim
Return type : string
Date created : 
Date last modified :
Author : 
Last modified by : 
Comments : Function will return the main string after removing white spaces from the right and left of the main string
User instruction : trim(str)
******************************************/
function trim(str) {
	return ltrim(rtrim(str));
}
/******************************************
Function name : isWhitespace
Return type : integer
Date created : 
Date last modified : 
Author : 
Last modified by : 
Comments : Function will return the index of white space encounter in the string.
User instruction : isWhitespace(charToCheck)
******************************************/
function isWhitespace(charToCheck) {
	var whitespaceChars = " \t\n\r\f";
	return (whitespaceChars.indexOf(charToCheck) != -1);
}


function deSelectCheckbox(formname)
{
	document.getElementById('Main').checked = false;
}

function setValidAction(value, formname,listname)
{
		if(value == 'Delete')
		{
			message = "delete selected "+listname;		
		}
		else
		{
			message = "change status of selected "+listname;
		}
		var flag = validator(message,formname);			
		if(flag)
		{			
			formname.submit();
		}
		else
		{
			formname.frmChangeAction.value='';	
			document.getElementById('Main').checked = false;
			formname.Main.checked=false;				
			elm=formname.elements;
			for(i=0;i<elm.length;i++)
			{
				if(elm[i].type=="checkbox")
				{			
					elm[i].checked = false;
				}
			}
			return false;
		}
}

/*****************************
Function name : validateAdminEmailChange
Return type : boolean
Date created : 5th January 2008
Date last modified : 5th January 2008
Author : Vineet Kumar
Last modified by : Vineet Kumar
Comments : This function is used to validate admin notification email id.
User instruction : validateAdminEmailChange(charToCheck)
************************************/
function validateEmailChange(formname)
{
	if(validateForm(document.getElementById(formname).id,'frmAdminEmail', 'E-mail','RisEmail'))
	{			
		var flag=confirm('Are you sure you want to change notification E-mail?')
		if(flag)
		return true;
		
		else
		return false;		
	} 
	else 
	{
		return false;
	} 
}


function dateCompares(formname)
{
	
		  var sliptdate	= document.getElementById(formname).frmTodate.value.split("-");
		  var FromDate  = document.getElementById(formname).frmDate.value.split("-");
			
		  if(document.getElementById(formname).frmTodate.value)
		   {
			/*********************** From Date *****************/
			var TY = FromDate[0];  //Year
			var TM = FromDate[1];  //Month
			var TD = FromDate[2];  //Date
			/******************* To Date *********************/
			var sY=sliptdate[0];  //Year
			var sM=sliptdate[1];  //Month
			var sD=sliptdate[2];  //Date
			
			/*******************Added by rupesh*********************/
			//alert(TM);
		
			if(sY<TY ) {
				
				alert("'Date To' should be greater than 'Date From'.");
				return false;	  
			}
			else if(sM==TM && sD<TD && sY==TY) { 

				alert("'Date To' should be greater than 'Date From'.");
				return false;
				
			}
			else if(sM<TM && sY==TY) { 
               alert("'Date To' should be greater than 'Date From'.");
				return false;
			}
		}
   }

/*****************************
Function name : validateBookOnline
Return type : none
Date created : 3 Oct 2008
Date last modified :  3 Oct 2008
Author :  Sharad Agarwal
Last modified by : sharad Agarwal
Comments : This function is used to validate the form
User instruction : validateQuote(formname)
************************************/
function validateQuote(formname)
{
	

	var flag=0;
	var message ='';
	var regEmail = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

	if((document.getElementById('frmName').value=='Name') || (document.getElementById('frmName').value==''))
	{
		
		message =  '- Name should not be blank\n';
		if(flag==0)
		{
		 varFocusElementID = 'frmName';
		 flag =1;
		}

	}

	if((document.getElementById('frmEmail').value=='Email') || (document.getElementById('frmEmail').value==''))
	{

		message = message  + '- Email should not be blank\n';
		//flag=1;
		if(flag==0)
		{
		 varFocusElementID = 'frmEmail';
		 flag =1;
		}
	
	}

	if((document.getElementById('frmPhone').value=='Phone') || (document.getElementById('frmPhone').value==''))
	{

		message = message + '- Phone should not be blank\n';
		if(flag==0)
			{
			 varFocusElementID = 'frmPhone';
			 flag =1;
			}
	}

		var result = trim(document.getElementById('frmMessage').value);
	if((result =='Message') || (document.getElementById('frmMessage').value==''))
	{
		  message = message + '- Message should not be blank\n';
			if(flag==0) 
			{
			 varFocusElementID = 'frmMessage';
			 flag =1;
			}
	}

	if((document.getElementById('frmCode').value=='Enter code') || (document.getElementById('frmCode').value==''))
	{
		  message = message  + '- Code should not be blank\n';
			if(flag==0)
			{
			 varFocusElementID = 'frmCode';
			 flag =1;
			}
	}
	
	if(document.getElementById('frmEmail').value!='Email')
	{
		if(!regEmail.test(document.getElementById('frmEmail').value))
		{
			
			message = message + '- Please Enter Valid Email\n';
			if(flag==0)
			{
			 varFocusElementID = 'frmEmail';
			 flag =1;
			}
		}
	}



		if(flag==0)
		{
	  		 return true;
		} 
		else 
		{
			
			var messageHead = 'Sorry, we can not complete your request.\n Kindly provide us the missing or incorrect information enclosed below.\n\n';
				message = messageHead + message;
			alert(message);
			document.getElementById(varFocusElementID).focus();
			 return false;
	
		} 


}

function validateQuote2(formname)
{
	

	var flag=0;
	var message ='';
	var regEmail = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

	if((document.getElementById('frmName').value=='Name') || (document.getElementById('frmName').value==''))
	{
		
		message =  '- Name should not be blank\n';
		if(flag==0)
		{
		 varFocusElementID = 'frmName';
		 flag =1;
		}

	}

	if((document.getElementById('frmEmail').value=='Email') || (document.getElementById('frmEmail').value==''))
	{

		message = message  + '- Email should not be blank\n';
		//flag=1;
		if(flag==0)
		{
		 varFocusElementID = 'frmEmail';
		 flag =1;
		}
	
	}

	if((document.getElementById('frmPhone').value=='Phone') || (document.getElementById('frmPhone').value==''))
	{

		message = message + '- Phone should not be blank\n';
		if(flag==0)
			{
			 varFocusElementID = 'frmPhone';
			 flag =1;
			}
	}

		var result = trim(document.getElementById('frmMessage').value);
	if((result =='Message') || (document.getElementById('frmMessage').value==''))
	{
		  message = message + '- Message should not be blank\n';
			if(flag==0) 
			{
			 varFocusElementID = 'frmMessage';
			 flag =1;
			}
	}

	if((document.getElementById('frmCode2').value=='Enter code') || (document.getElementById('frmCode2').value==''))
	{
		  message = message  + '- Code should not be blank\n';
			if(flag==0)
			{
			 varFocusElementID = 'frmCode2';
			 flag =1;
			}
	}
	
	if(document.getElementById('frmEmail').value!='Email')
	{
		if(!regEmail.test(document.getElementById('frmEmail').value))
		{
			
			message = message + '- Please Enter Valid Email\n';
			if(flag==0)
			{
			 varFocusElementID = 'frmEmail';
			 flag =1;
			}
		}
	}



		if(flag==0)
		{
	  		 return true;
		} 
		else 
		{
			
			var messageHead = 'Sorry, we can not complete your request.\n Kindly provide us the missing or incorrect information enclosed below.\n\n';
				message = messageHead + message;
			alert(message);
			document.getElementById(varFocusElementID).focus();
			 return false;
	
		} 


}




function validateNews(frm)
{

	var flag=0;
	var message='';
	var regEmail = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

	
if(document.getElementById('frmLetterEmail').value=='Enter your email here' || document.getElementById('frmLetterEmail').value =='' )
	{
		document.getElementById('frmLetterEmail').value = '';
		message =  'Enter the email address.';
		flag =1;
		alert(message);
		document.getElementById('frmLetterEmail').focus();
		
	}
	
	
		if(document.getElementById('frmLetterEmail').value!='Enter your email here')
	{
		if(!regEmail.test(document.getElementById('frmLetterEmail').value))
		{
			
			message = message +"\n" + 'Please Enter Valid Email';
			if(flag==0)
			{
			 	document.getElementById('frmLetterEmail').focus();
			 flag =1;
			 	alert(message);
			}
		}
	}
	

	
	 if(flag==1)
	 return false;
	 else
	 return true;
}


