/*########################################################
  Title				: CWC common javascript Functions
  Project Name		: CWC
  File Name			: js_functions.js
  Created Date		: 21-01-2008
  Modified Date		: 21-01-2008
  Author			: Rifluxyss Softwares  
  Version			: 1.0
  Quality Rvw		: None
  Bug (contact)		: support@rifluxyss.com

File changes history:
 This file contains all the common java script functions that is used for this project
#########################################################*/

//function used to return the extension of the given file
function funGetFileExtension(strInputFile)
{
 var Extension="";
 if(trimAll(strInputFile)!="")
 {
   //Filelength=strInputFile.length;
   //indexofDot=strInputFile.indexOf(".");
  // Extension=strInputFile.substring(indexofDot+1,Filelength);
  	var ary = strInputFile.split(".");
	var ext = ary[ary.length-1].toLowerCase();
 }

  return ext;
}

//function used to check if the given date is valid or not
function funIsValidDate(strDate)
{	
   var validate = false;
   if(trimAll(strDate)!="")
   {
	 strDate= replace(strDate,"-","/");		
	 var arrDate = strDate.split('/');
	 if(arrDate.length==3)
	 {
	   var month = trimAll(arrDate[0]);
	   var date= trimAll(arrDate[1]);
	   var year= trimAll(arrDate[2]);

	   //if(isNaN(month) || isNaN(date) || isNaN(year) || month.length!=2|| date.length!=2|| year.length!=4)
	   if(isNaN(month) || isNaN(date) || isNaN(year) || year.length<2 || year.length>4|| year.length==3)
	   {           
		   validate = false;
	   }
	   else
		{
			month = parseFloat(month);
			date= parseFloat(date);
			year= parseFloat(year);

			if(month>0 && month<=12 && date>0 && date<=31 && year>0)
			 validate = true;		
		}
	 }//arr length check ends
	
  }//trimAll(strDate)!="" check ends
  else
	validate = true;

  return validate;
}

function  validateString( strValue ) {
 var objRegExp  =  /(^[a-zA-Z]+$)/; 
  return objRegExp.test(strValue);
}
function  validateNumeric( strValue ) {
/******************************************************************************
DESCRIPTION: Validates that a string contains only valid numbers.

PARAMETERS:
   strValue - String to be tested for validity
   
RETURNS:
   True if valid, otherwise false.
******************************************************************************/
  var objRegExp  =  /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/; 
 
  //check for numeric characters 
  return objRegExp.test(strValue);
}

function validateInteger( strValue ) {
/************************************************
DESCRIPTION: Validates that a string contains only 
    valid integer number.
    
PARAMETERS:
   strValue - String to be tested for validity
   
RETURNS:
   True if valid, otherwise false.
******************************************************************************/
  var objRegExp  = /(^-?\d\d*$)/;
 
  //check for integer characters
  return objRegExp.test(strValue);
}

function validateNotEmpty( strValue ) {
/************************************************
DESCRIPTION: Validates that a string is not all
  blank (whitespace) characters.
    
PARAMETERS:
   strValue - String to be tested for validity
   
RETURNS:
   True if valid, otherwise false.
*************************************************/
   var strTemp = strValue;
   strTemp = trimAll(strTemp);
   if(strTemp.length > 0){
     return true;
   }  
   return false;
}

function validateEmail( strValue) {
/************************************************
DESCRIPTION: Validates that a string contains a 
  valid email pattern. 
  
 PARAMETERS:
   strValue - String to be tested for validity
   
RETURNS:
   True if valid, otherwise false.
   
REMARKS: Accounts for email with country appended
  does not validate that email contains valid URL
  type (.com, .gov, etc.) and optionally,
  a valid country suffix.  Since email has many
  forms this expression only tests for near valid
  address.  Some additional validation may be
  required.
*************************************************/
var objRegExp  = /^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,3}(\.[a-z]{2}){0,2})$/i;
  //check for valid email
  return objRegExp.test(strValue);
}

function rightTrim( strValue ) {
/************************************************
DESCRIPTION: Trims trailing whitespace chars.
    
PARAMETERS:
   strValue - String to be trimmed.  
      
RETURNS:
   Source string with right whitespaces removed.
*************************************************/
var objRegExp = /^([\w\W]*)(\b\s*)$/;
 
      if(objRegExp.test(strValue)) {
       //remove trailing a whitespace characters
       strValue = strValue.replace(objRegExp, '$1');
    }
  return strValue;
}

function leftTrim( strValue ) {
/************************************************
DESCRIPTION: Trims leading whitespace chars.
    
PARAMETERS:
   strValue - String to be trimmed
   
RETURNS:
   Source string with left whitespaces removed.
*************************************************/
var objRegExp = /^(\s*)(\b[\w\W]*)$/;
 
      if(objRegExp.test(strValue)) {
       //remove leading a whitespace characters
       strValue = strValue.replace(objRegExp, '$2');
    }
  return strValue;
}

function trimAll( strValue ) {
/************************************************
DESCRIPTION: Removes leading and trailing spaces.

PARAMETERS: Source string from which spaces will
  be removed;

RETURNS: Source string with whitespaces removed.
*************************************************/ 
 var objRegExp = /^(\s*)$/;

    //check for all spaces
    if(objRegExp.test(strValue)) {
       strValue = strValue.replace(objRegExp, '');
       if( strValue.length == 0)
          return strValue;
    }
    
   //check for leading & trailing spaces
   objRegExp = /^(\s*)([\W\w]*)(\b\s*$)/;
   if(objRegExp.test(strValue)) {
       //remove leading and trailing whitespace characters
       strValue = strValue.replace(objRegExp, '$2');
    }
  return strValue;
}

function validateCurrency( strValue)  {
/************************************************
DESCRIPTION: Validates that a string contains a 
  valid currency format. 
  
 PARAMETERS:
   strValue - String to be tested for validity
   
RETURNS:
   True if valid, otherwise false.
*************************************************/
  var objRegExp = /(^\$\d{1,3}(,\d{3})*\.\d{2}$)|(^\(\$\d{1,3}(,\d{3})*\.\d{2}\)$)/;

  return objRegExp.test( strValue );
}

function validateTime ( strValue ) {
/************************************************
DESCRIPTION: Validates that a string contains a 
  valid 12 hour time format. Seconds are optional.
  
 PARAMETERS:
   strValue - String to be tested for validity
   
RETURNS:
   True if valid, otherwise false.

REMARKS: Returns True for time formats such as:
  HH:MM or HH:MM:SS or HH:MM:SS.mmm (where the
  .mmm is milliseconds as used in SQL Server 
  datetime datatype.  Also, the .mmm portion will 
  accept 1 to 3 digits after the period)
*************************************************/
  var objRegExp = /^([1-9]|1[0-2]):[0-5]\d(:[0-5]\d(\.\d{1,3})?)?$/;

  return objRegExp.test( strValue );

}

function validateState (strValue ) {
/************************************************
DESCRIPTION: Validates that a string contains a 
  valid state abbreviation. 
  
 PARAMETERS:
   strValue - String to be tested for validity
   
RETURNS:
   True if valid, otherwise false.
*************************************************/

var objRegExp = /^(AK|AL|AR|AZ|CA|CO|CT|DC|DE|FL|GA|HI|IA|ID|IL|IN|KS|KY|LA|MA|MD|ME|MI|MN|MO|MS|MT|NB|NC|ND|NH|NJ|NM|NV|NY|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VA|VT|WA|WI|WV|WY)$/i; 
  return objRegExp.test(strValue);
}

function validateSSN( strValue ) {
/************************************************
DESCRIPTION: Validates that a string contains a 
  valid social security number. 
  
 PARAMETERS:
   strValue - String to be tested for validity
   
RETURNS:
   True if valid, otherwise false.
*************************************************/
var objRegExp  = /^\d{3}\-\d{2}\-\d{4}$/;
 
  //check for valid SSN
  return objRegExp.test(strValue);

}



function validateUSPhone( strValue ) {
/************************************************
DESCRIPTION: Validates that a string contains valid
  US phone pattern. 
  Ex. (999) 999-9999 or (999)999-9999
  
PARAMETERS:
   strValue - String to be tested for validity
   
RETURNS:
   True if valid, otherwise false.
*************************************************/
  var objRegExp  = /^\([1-9]\d{2}\)\s?\d{3}\-\d{4}$/;
 
  //check for valid us phone with or without space between 
  //area code
  return objRegExp.test(strValue); 
}


function validateUSZip( strValue ) {
/************************************************
DESCRIPTION: Validates that a string a United
  States zip code in 5 digit format or zip+4
  format. 99999 or 99999-9999
    
PARAMETERS:
   strValue - String to be tested for validity
   
RETURNS:
   True if valid, otherwise false.

*************************************************/
var objRegExp  = /(^\d{5}$)|(^\d{5}-\d{4}$)/;
 
  //check for valid US Zipcode
  return objRegExp.test(strValue);
}



/*********paramasivan script starts************/

function validateUrl(strValue) 
	{ 
	var objRegExp=/^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.|http:\/\/|https:\/\/){1}([\w]+)(.[\w]+){1,2}$/;
	return objRegExp.test(strValue);
	} 

/*********paramasivan script ends************/

function replace(argvalue, x, y) {

  if ((x == y) || (parseInt(y.indexOf(x)) > -1)) {
    errmessage = "replace function error: \n";
    errmessage += "Second argument and third argument could be the same ";
    errmessage += "or third argument contains second argument.\n";
    errmessage += "This will create an infinite loop as it's replaced globally.";
    alert(errmessage);
    return false;
  }
    
  while (argvalue.indexOf(x) != -1) {
    var leading = argvalue.substring(0, argvalue.indexOf(x));
    var trailing = argvalue.substring(argvalue.indexOf(x) + x.length, 
	argvalue.length);
    argvalue = leading + y + trailing;
  }

  return argvalue;

}
function validateUSDate( strValue ) {
/************************************************
DESCRIPTION: Validates that a string contains only 
    valid dates with 2 digit month, 2 digit day, 
    4 digit year. Date separator can be ., -, or /.
    Uses combination of regular expressions and 
    string parsing to validate date.
    Ex. mm/dd/yyyy or mm-dd-yyyy or mm.dd.yyyy
    
PARAMETERS:
   strValue - String to be tested for validity
   
RETURNS:
   True if valid, otherwise false.
   
REMARKS:
   Avoids some of the limitations of the Date.parse()
   method such as the date separator character.
*************************************************/
  var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
 
  //check to see if in correct format
  if(!objRegExp.test(strValue))
    return false; //doesn't match pattern, bad date
  else{
    var arrayDate = strValue.split(RegExp.$1); //split date into month, day, year
	var intDay = parseInt(arrayDate[1],10); 
	var intYear = parseInt(arrayDate[2],10);
    var intMonth = parseInt(arrayDate[0],10);
	
	//check for valid month
	if(intMonth > 12 || intMonth < 1) {
		return false;
	}
	
    //create a lookup for months not equal to Feb.
    var arrayLookup = { '01' : 31,'03' : 31, '04' : 30,'05' : 31,'06' : 30,'07' : 31,
                        '08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31}
  
    //check if month value and day value agree
    if(arrayLookup[arrayDate[0]] != null) {
      if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0)
        return true; //found in lookup table, good date
    }
		
    //check for February
	var booLeapYear = (intYear % 4 == 0 && (intYear % 100 != 0 || intYear % 400 == 0));
    if( ((booLeapYear && intDay <= 29) || (!booLeapYear && intDay <=28)) && intDay !=0)
      return true; //Feb. had valid number of days
  }
  return false; //any other values, bad date
}

function validateValue( strValue, strMatchPattern ) {
/************************************************
DESCRIPTION: Validates that a string a matches
  a valid regular expression value.
    
PARAMETERS:
   strValue - String to be tested for validity
   strMatchPattern - String containing a valid
      regular expression match pattern.
      
RETURNS:
   True if valid, otherwise false.
*************************************************/
var objRegExp = new RegExp( strMatchPattern);
 
 //check if string matches pattern
 return objRegExp.test(strValue);
}


function removeCurrency( strValue ) {
/************************************************
DESCRIPTION: Removes currency formatting from 
  source string.
  
PARAMETERS: 
  strValue - Source string from which currency formatting
     will be removed;

RETURNS: Source string with commas removed.
*************************************************/
  var objRegExp = /\(/;
  var strMinus = '';
 
  //check if negative
  if(objRegExp.test(strValue)){
    strMinus = '-';
  }
  
  objRegExp = /\)|\(|[,]/g;
  strValue = strValue.replace(objRegExp,'');
  if(strValue.indexOf('$') >= 0){
    strValue = strValue.substring(1, strValue.length);
  }
  return strMinus + strValue;
}

function addCurrency( strValue ) {
/************************************************
DESCRIPTION: Formats a number as currency.

PARAMETERS: 
  strValue - Source string to be formatted

REMARKS: Assumes number passed is a valid 
  numeric value in the rounded to 2 decimal 
  places.  If not, returns original value.
*************************************************/
  var objRegExp = /-?[0-9]+\.[0-9]{2}$/;
   
    if( objRegExp.test(strValue)) {
      objRegExp.compile('^-');
      strValue = addCommas(strValue);
      if (objRegExp.test(strValue)){
        strValue = '($' + strValue.replace(objRegExp,'') + ')';
      }
      else {
        strValue = '$' + strValue;
      }
      return  strValue;
    }
    else
      return strValue;
}

function removeCommas( strValue ) {
/************************************************
DESCRIPTION: Removes commas from source string.

PARAMETERS: 
  strValue - Source string from which commas will 
    be removed;

RETURNS: Source string with commas removed.
*************************************************/
  var objRegExp = /,/g; //search for commas globally
 
  //replace all matches with empty strings
  return strValue.replace(objRegExp,'');
}

function addCommas( strValue ) {
/************************************************
DESCRIPTION: Inserts commas into numeric string.

PARAMETERS: 
  strValue - source string containing commas.
  
RETURNS: String modified with comma grouping if
  source was all numeric, otherwise source is 
  returned.
  
REMARKS: Used with integers or numbers with
  2 or less decimal places.
*************************************************/
  var objRegExp  = new RegExp('(-?[0-9]+)([0-9]{3})'); 

    //check for match to search criteria
    while(objRegExp.test(strValue)) {
       //replace original string with first group match, 
       //a comma, then second group match
       strValue = strValue.replace(objRegExp, '$1,$2');
    }
  return strValue;
}

function removeCharacters( strValue, strMatchPattern ) {
/************************************************
DESCRIPTION: Removes characters from a source string
  based upon matches of the supplied pattern.

PARAMETERS: 
  strValue - source string containing number.
  
RETURNS: String modified with characters
  matching search pattern removed
  
USAGE:  strNoSpaces = removeCharacters( ' sfdf  dfd', 
                                '\s*')
*************************************************/
 var objRegExp =  new RegExp( strMatchPattern, 'gi' );
 
 //replace passed pattern matches with blanks
  return strValue.replace(objRegExp,'');
}

//  functio for enter kay press event in login page.
function enter_key_for_login_page(e,formname)
{
	if(e.keyCode==13)
	{
	 if (navigator.appName=="Netscape")
	 {
	  e.preventDefault();
	 }
	else
	  e.keyCode=0;
	 validatelogin(formname);
	}
}
//function  used to validate login form
function validatelogin(formname)
{	
with(document.forms[formname])
	{
	   if(trimAll(loginusername.value)=="")
		{
			alert("Please enter Username");
			loginusername.focus();
			return false;
		}	
		if(trimAll(loginpassword.value)=="")
		{
			alert("Please enter Password");
			loginpassword.focus();
			return false;
		}	
		HidenMode.value="login";
		submit();		
		return true;
	}
}
//function  used to validate sample add form
function validatesample(formname)
{	
with(document.forms[formname])
	{
//	   if(trimAll(txt_postjob.value)=="")
//		{
//			alert("Please enter the post job");
//			txt_postjob.focus();
//			return false;
//		}	
//		else 
		if(trimAll(txt_fname.value)=="")
		{
			alert("Please enter the first name");
			txt_fname.focus();
			return false;
		}
		else if(trimAll(txt_lname.value)=="")
		{
			alert("Please enter the last name");
			txt_lname.focus();
			return false;
		}
//		else if(trimAll(txt_email1.value)=="")
//		{
//			alert("Please enter the email");
//			txt_email1.focus();
//			return false;
//		}
//		else if(!(validateEmail(trimAll(txt_email1.value))))
//			{
//				alert("Please enter valid email address!");
//				txt_email1.focus(); 
//				return false;
//			}
//		else if(trimAll(txt_adrs1.value)=="")
//		{
//			alert("Please enter the address");
//			txt_adrs1.focus();
//			return false;
//		}
		else if(trimAll(selCity.value)=="")
		{
			alert("Please enter the city name ");
			selCity.focus();
			return false;
		}
		else if(trimAll(selState.value)=="")
		{
			alert("Please enter the state name");
			selState.focus();
			return false;
		}
//		else if(trimAll(txt_phone1.value)=="")
//		{
//			alert("Please enter the phone number");
//			txt_phone1.focus();
//			return false;
//		}
//		else if(trimAll(txt_fax1.value)=="")
//		{
//			alert("Please enter the fax ");
//			txt_fax1.focus();
//			return false;
//		}
		else if(trimAll(selSpeciality1.value)=="")
		{
			alert("Please enter the Speciality1");
			selSpeciality1.focus();
			return false;
		}
//		else if(trimAll(txt_zip.value)=="")
//		{
//			alert("Please enter the zip code");
//			txt_zip.focus();
//			return false;
//		}
//		else if(nomail.checked==false && yesmail.checked==false)
//		{
//			alert("Please check the field of do/don't email");
//			txt_spl1.focus();
//			return false;
//		}
//		else if(nofax.checked==false && yesfax.checked==false)
//		{
//			alert("Please check the field of do/don't fax");
//			txt_spl1.focus();
//			return false;
//		}
		HidenMode.value="sampleadd";
		submit();		
		return true;
	}
}

//// function used to make all check boxes to be true or false
///by clicking the one common checkbox    
function fun_checkall(formname,parent_ctrlname,child_ctrlname,numofrows)
{
	with(document.forms[formname])
	{      
	   var chktrue=false;
	   var chktext;
	  
		if(document.all)
		{
		  chktext=document.getElementById("chkall").innerText;
		} 
		else
		{
		 chktext=document.getElementById("chkall").textContent;
		} 
		
	   for(chkbx=1;chkbx<=numofrows;chkbx++)
	   {
	      chkbx_id=child_ctrlname+chkbx;

		  if(chktext=="Checkall"){ 
			 elements[chkbx_id].checked=true;
			 chktrue=true;
		  }
		   
		  else
			elements[chkbx_id].checked=false;
		  
		  
		}

		//all check box are now checke
		if(chktrue){
						
						if(document.all)
						{
						 document.getElementById("chkall").innerText="Uncheckall";
						} 
						else
						{
						 document.getElementById("chkall").textContent ="Uncheckall";
						}
		}
		//check boxes are now unchecked
		else{
				if(document.all)
						{
						 document.getElementById("chkall").innerText="Checkall";
						} 
						else
						{
						 document.getElementById("chkall").textContent ="Checkall";
						}
		}
		

    }
}


function pagetransfer(pagenumber,formname)
{	
	with(document.forms[formname])
	{ 
			HdnPage.value=pagenumber;
			HiddenMode.value="paging";
			//hdnUpdate.value="update";
			submit();
	}
}

//function used to validate multiple drop down datas
function  fun_checkMultipleselectdropdown_values(formname,ctrlname,selectedCountrynames)
{
	with(document.forms[formname])
	{
		if(selectedCountrynames!="")
		{
			for (var i=1; i < elements[ctrlname].options.length; i++)
			{
			optionValue =elements[ctrlname].options[i].value;
			if (selectedCountrynames.indexOf(optionValue)>=0)
			   elements[ctrlname].options[i].selected =true;
			}
		}
	}
}

function func_go_to_page(FrmName)
{	
	with(document.forms[FrmName])
	{
		HiddenMode.value="paging";
		HdnPage.value=gotopage.value;
		submit();
	}
}


function func_show_to_page(FrmName)
{
	with(document.forms[FrmName])
	{
		RecordsPerPageMode.value="show";
		RecordsPerPagevalue.value=RecPerPage.value;
		submit();
	}
}

function addToSelection(FrmName,MainCntrl,SubCntrl,Serno) 
{
	
	var selectionForm = document.forms[FrmName]; 
	var available = selectionForm.elements[SubCntrl+Serno];
	var item;
	var idx = available.selectedIndex;
	if (idx >= 0 ) 
	  {
		item = available[idx];
		var val = item.value;
		var selected = selectionForm.elements[MainCntrl+Serno];
		var temp = new Option(item.text);
		temp.value = val;
		selected.options[selected.options.length] = temp;
		available[idx] = null;
		updateTwoWayList(FrmName,MainCntrl,SubCntrl,Serno);
	  }
}

function removeFromSelection(FrmName,MainCntrl,SubCntrl,Serno)
{
	var moveOnly = null;
	var selectionForm = document.forms[FrmName]; 
	if ( moveOnly == null ) 
	{
		var moveOnlyField = selectionForm.elements['MoveOnly'];
		moveOnly = moveOnlyField.value.split(',');
	}
	var selected = selectionForm.elements[MainCntrl+Serno];
	var item;
	var idx = selected.selectedIndex;
	if (idx >= 0 ) 
	{
		item = selected[idx];
		var val = item.value;
		if ( removeAllowed(val,FrmName) ) 
		{
			var available = selectionForm.elements[SubCntrl+Serno];
			var temp = new Option(item.text);
			temp.value = val;
			available.options[available.options.length] = temp;
			selected[idx] = null;
			updateTwoWayList(FrmName,MainCntrl,SubCntrl,Serno);
		}
	}
}

function moveSelectedUp(FrmName,MainCntrl,SubCntrl,Serno) 
{
	var selectionForm = document.forms[FrmName]; 
	var selected = selectionForm.elements[MainCntrl+Serno];	
	var idx = selected.selectedIndex;		
	if ( idx > 0 ) 
	  { 
		// one way for NS 4, another for others		
		if( typeof( document.layers ) != "undefined" ) 
		  {
			var item1 = selected[idx];
			var item2 = selected[idx - 1];
			var temp = new Option();
			temp.value = item2.value;
			temp.text = item2.text;
			selected[idx - 1] = item1;
			selected[idx] = temp;
			updateTwoWayList(FrmName,MainCntrl,SubCntrl,Serno);			
		  }
		else 
		  {			
			var item1 = selected[idx];
			selected[idx] = new Option();
			var item2 = selected[idx - 1];
			selected[idx - 1] = item1;
			selected[idx] = item2;
			updateTwoWayList(FrmName,MainCntrl,SubCntrl,Serno);
		  }
	  }	
}

function moveSelectedDown(FrmName,MainCntrl,SubCntrl,Serno) 
{
	var selectionForm = document.forms[FrmName];  
	var selected = selectionForm.elements[MainCntrl+Serno];	
	var idx = selected.selectedIndex;
	if ( idx >= 0 && idx < selected.options.length - 1 ) 
	  {
		// one way for NS 4, another for others
	if( typeof( document.layers ) != "undefined" ) 
	  {
		var item1 = selected[idx];
		var item2 = selected[idx + 1];
		var temp = new Option();
		temp.value = item2.value;
		temp.text = item2.text;
		selected[idx + 1] = item1;
		selected[idx] = temp;
		updateTwoWayList(FrmName,MainCntrl,SubCntrl,Serno);
	  }
	else 
	  {
		var item1 = selected[idx];
		selected[idx] = new Option();;
		var item2 = selected[idx + 1];
		selected[idx + 1] = item1;
		selected[idx] = item2;
		updateTwoWayList(FrmName,MainCntrl,SubCntrl,Serno);
	  }
	  }
}

function updateTwoWayList(FrmName,MainCntrl,SubCntrl,Serno) 
{
	var selectionForm = document.forms[FrmName]; 	
	var str = "";
	var options = selectionForm.elements[MainCntrl+Serno].options;	   
	for(var i = 0; i < options.length; i++ ) 
	{
	   if ( i > 0 )
		 str += ",";
		 str += options[i].value;
	}	

	selectionForm.elements['SelectedList'].value = str;	   

	str = "";	
	options = selectionForm.elements[SubCntrl+Serno].options;
	var i;
	for( i = 0; i < options.length; i++ ) 
	 {
	   if ( i > 0 )
	   str += ",";
	   str += options[i].value;
	 }
	selectionForm.elements['AvailableList'].value = str;
	fixMoveIcons(FrmName,MainCntrl,SubCntrl,Serno);
	
}


function fixMoveIcons(FrmName,MainCntrl,SubCntrl,Serno) 
{

	var imageHost = "http://w2kserver/medquest/images/";
	var selectionForm = document.forms[FrmName]; 
	var selector = selectionForm.elements[MainCntrl+Serno];
	var idx = selector.selectedIndex;
	if ( idx >= 0 ) 
	{
		var upObj = document.images['SubmitAction.MoveSelectionUp'];
		if ( upObj ) 
		{
			if ( idx == 0 ) 
				upObj.src = imageHost + "iconInactMoveUp.gif";
			else
				upObj.src = imageHost + "iconMoveUp.gif";
		}

		var downObj = document.images['SubmitAction.MoveSelectionDown'];
		if ( downObj ) 
		{
			if ( idx == selector.options.length - 1) 
				downObj.src = imageHost + "iconInactMoveDwn.gif";
			else
				downObj.src = imageHost + "iconMoveDwn.gif";
		}
		var item = selector[idx];
		var removeObj = document.images['SubmitAction.RemoveFromSelection'];
		if ( removeObj ) 
		{
			if ( removeAllowed(item.value,FrmName) ) 
				removeObj.src = imageHost + "iconMoveDwn.gif";
			else
				removeObj.src = imageHost + "iconInactMoveLt.gif";
		}
	}
}

function removeAllowed(val,FrmName)
{	
	var moveOnly = null;
	var selectionForm = document.forms[FrmName]; 
	if ( moveOnly == null ) 
	{
		var moveOnlyField = selectionForm.elements['MoveOnly'];
		moveOnly = moveOnlyField.value.split(',');
	}
	if ( moveOnly != null ) 
	{
		for(var i = 0; i < moveOnly.length;i++ ) 
		{
			if ( val == moveOnly[i] )
				return false;
		}
	}
	return true;
}

function associativeArrayLength(array)
{
	var length = 0;
	for (var object in array)
	{
		length++;
	}
	return length;
}


function GetCharacterForRespectiveColumn(Numberone,Numbertwo)
{
	var ColumnArray = Array();
	for(var q=65,i=1;q<=90;q++,i++)
	{		
		ColumnArray[i]=String.fromCharCode(q);				
	}
	alert("column "+ ColumnArray[Numberone] + " and coulmn " + ColumnArray[Numbertwo] + " found same" );
	return false;
}

//// function used to make all check boxes to be true or false
///by clicking the one common checkbox    
function funCheckAll(formname,parent_ctrlname,child_ctrlname,numofrows)
{
	with(document.forms[formname])
	{
      if(elements[parent_ctrlname].checked==true)
	  {
	   for(chkbx=1;chkbx<=numofrows;chkbx++)
	   {
	      chkbx_id=child_ctrlname+chkbx;
	     elements[chkbx_id].checked=true;
		}
	   }
	  else
	     {
	     for(chkbx=1;chkbx<=numofrows;chkbx++)
	      {
	       chkbx_id=child_ctrlname+chkbx;
	       elements[chkbx_id].checked=false;
		  }
		}
    }
}

//function used to find the checked check boxes
function funFindCheckedChkbox(formname,ctrlname,numofrows)
{
 with(document.forms[formname])
 {
  chkd=false;
  for(chkbx=1;chkbx<=numofrows;chkbx++)
  {
   chkbx_id=ctrlname+chkbx;
   if((elements[chkbx_id].checked==true))
	{        
     chkd=true; 
	 break;
	}
  }
 }
 return  chkd ;
}

function show_validation(FrmName,id)
{
	var newid = id;
	with(document.forms[FrmName])
	{
		/*if(from_date.value=="" && to_date.value=="")
		{
			alert("Plese select the  date to search the fax list!!! ");
			return false;
		}*/
		if(!(validateUSDate(from_date.value) ) &&  from_date.value!="")
		{
			alert("Please enter the valid date ");
			return false;
		}
		else if(!(validateUSDate(to_date.value) ) &&  to_date.value!="")
		{
			alert("Please enter the valid date ");
			return false;
		}
		action="fax_list.php?pid="+newid;
		HiddenSearchMode.value="show";
		submit();
	}
}

function fnmakelist(FrmName)
{
	with(document.forms[FrmName])
	{
		action="fax/generatereports.php";
		submit();
	}
}

/*Added by Sankar 29-10-07 */
function fnShowEmailList(FrmName,id)
{
	var newid = id;
	with(document.forms[FrmName])
	{	
		action="email_list.php?pid="+newid;
		HdnList.value="show";
		HiddenSearchMode.value="show";
		submit();
	}
}

/*Added by Sankar 29-10-07 */
function fnShowFaxList(FrmName,id)
{
	var newid = id;
	with(document.forms[FrmName])
	{	
		action="fax_list.php?pid="+newid;
		HdnList.value="show";
		HiddenSearchMode.value="show";
		submit();
	}
}


function fnOpenfrmTemplates()
{		
		window.open("templates_adv_list.php?adv_cnt=12","Adeverisments","width=810,height=600,left=100,top=50,scrollbars=yes");
}

function fnOpenFlashTemplates(merchant_id)
{		
	window.open("templates_adv_list.php?merchant_id="+merchant_id,"Adeverisments","width=810,height=600,left=100,top=50,scrollbars=yes");
}

function fnAddFlashBanner()
{	
	document.location= "templates_adv_list.php?mode=add";
}

function addBrowseControl(formname) 
{
	with(document.forms[formname])
	{
		MaxLimit = parseFloat(hdn_NumofUplodedSeminarFiles.value);
		currentLimit=parseFloat(hdn_BrowseCtrlCount.value);
		num=parseInt(currentLimit)+1;
		if(num<=MaxLimit)
		{
			document.getElementById("browse_tr"+num).style.display="";
			hdn_BrowseCtrlCount.value=num;
		} 
	}
}

function openHelpZip(){
	window.open("help_zip.php","helper","width=300,height=150");
}

//function used to validate login form starts
function funLogin_EnterKey(e,formname)
{
	if(e.keyCode==13)
	{
	 if (navigator.appName=="Netscape")
	 {
	  e.preventDefault();
	 }
	else
	  e.keyCode=0;
	  funLogin(formname);
	}
}

//function used to validatet he login form controls starts here
function funLogin(formname)
{		
	with(document.forms[formname])
	{
		if(trimAll(txtbx_username.value)=="")
		{
			alert("Please enter username.");
			txtbx_username.focus(); 
			return false;
		}
		else if(txtbx_pass.value=="")
		{
			alert("Please enter password.");
			txtbx_pass.focus(); 
			return false;
		}
		else
		{
			hdn_mode.value="login";
			submit();
			return true;
		}
	}
}
//function used to validate login form ends

//function used to validate the change password form when
///clicking on the enter key
function funChangePassword_EnterKey(e,formname)
{
	if(e.keyCode==13)
	{
	 if (navigator.appName=="Netscape")
	 {
	  e.preventDefault();
	 }
	else
	  e.keyCode=0;
	  funChangePassword(formname);
	}
}

//function used to validate the change password form  starts
function funChangePassword(formname)
{
	with(document.forms[formname])
	{
		if(trimAll(txt_CurrentPass.value)=="")
		{
			alert("Enter your current password.");
			txt_CurrentPass.focus();
			return false;
		}
		else if(trimAll(txt_NewPass.value)=="")
		{
			alert("Enter your new password.");
			txt_NewPass.focus();
			return false;
		}		
		else if(trimAll(txt_ConfirmPass.value)=="")
		{
			alert("Confirm your password.");
			txt_ConfirmPass.focus();
			return false;
		}
      	else if(txt_ConfirmPass.value!=txt_NewPass.value)
		{
			alert("Confirm password doesn't match with the new password.");
			txt_ConfirmPass.focus();
			return false;
		}
		else
		{
		  hdn_mode.value="change_password";
		  submit();
		  return true;
		}
	}
}

//function used to validate the change password form when
///clicking on the enter key
function funChangePassword_EnterKey(e,formname)
{
	if(e.keyCode==13)
	{
	 if (navigator.appName=="Netscape")
	 {
	  e.preventDefault();
	 }
	else
	  e.keyCode=0;
	  funChangePassword(formname);
	}
}

//function used to validate the change password form  starts
function funChangePassword(formname)
{
	with(document.forms[formname])
	{
		if(trimAll(txt_CurrentPass.value)=="")
		{
			alert("Enter your current password.");
			txt_CurrentPass.focus();
			return false;
		}
		else if(trimAll(txt_NewPass.value)=="")
		{
			alert("Enter your new password.");
			txt_NewPass.focus();
			return false;
		}		
		else if(trimAll(txt_ConfirmPass.value)=="")
		{
			alert("Confirm your password.");
			txt_ConfirmPass.focus();
			return false;
		}
      	else if(txt_ConfirmPass.value!=txt_NewPass.value)
		{
			alert("Confirm password doesn't match with the new password.");
			txt_ConfirmPass.focus();
			return false;
		}
		else
		{
		  hdn_mode.value="change_password";
		  submit();
		  return true;
		}
	}
}

//function used to validate the forgot password form when
///clicking on the enter key
function funForgotPassword_EnterKey(e)
{
	if(e.keyCode==13)
	{
	 if (navigator.appName=="Netscape")
	 {
	  e.preventDefault();
	 }
	else
	  e.keyCode=0;
	  funForgotPassword();
	}
}

//function used to validate the change password form  starts
function funForgotPassword()
{
	var formname="frm_forgot_password";
	var strCurUsrtype=trimAll(hdn_UsrType.value);
	with(document.forms[formname])
	{
		if(strCurUsrtype=="member")
		{
			if(trimAll(txt_mem_LoginName.value)=="")
			{
				alert("Enter your login name.");
				txt_mem_LoginName.focus();
				return false;
			}
			else if(trimAll(txt_mem_Email.value)=="")
			{
				alert("Enter your email address.");
				txt_mem_Email.focus();
				return false;
			}
			else
			{
			  hdn_mode.value="get_password";
			  submit();
			  return true;
			}
		}
		else
		{
		    if(trimAll(txt_mer_Login.value)=="")
			{
				alert("Enter your login name.");
				txt_mer_Login.focus();
				return false;
			}
			else if(trimAll(txt_mer_ContactEmail.value)=="")
			{
				alert("Enter your contact email.");
				txt_mer_ContactEmail.focus();
				return false;
			}
			else
			{
			   hdn_mode.value="get_password";
			   submit();
			   return true;
			}
		}
	}
}

//function used maintaining the paging of listing datas
function funAdminPageTransfer(pagenumber,formname)
{	
	with(document.forms[formname])
	{ 
		HdnPage.value=pagenumber;
		HiddenMode.value="paging";
		submit();
	}
}

//function used maintaining the ordering of columns in listing 
//pages
function funSortByColumns(formname,type,order)
{
	with(document.forms[formname])
	{
		HiddenSort.value="yes";
		HiddenSortBy.value=type;
		HiddenSortingOrder.value=order;
		submit();
	}
}

function finish(usertype)
{
	 if(usertype=="merchant")
		redirect_file = "merchant_home.php";
	if(usertype=="manufacturer")
		redirect_file = "manufacturer_home.php";

	document.location=redirect_file;
}

function fnOpenpopup()
{
	window.open("narrow_my_search.php","Advertisment","width=600,height=525,left=200,top=150,scrollbars=yes");
}

function fnOpenwelcomepopup(clickfrom)
{
	if(clickfrom == "merchant")
		window.open("merchant_welcome_popup.php","merchant","width=850,height=650,left=125,top=50,scrollbars=yes");
	else if(clickfrom == "restaurants")
		window.open("restaurant_welcome_popup.php","restaurants","width=900,height=550,left=125,top=50,scrollbars=yes");
	else if(clickfrom == "manufacturer")
		window.open("manufacturer_welcome_popup.php","manufacturer","width=750,height=550,left=125,top=50,scrollbars=yes");
	else if(clickfrom == "merchant1")
		window.open("merchant1_welcome_popup.php","merchant","width=750,height=390,left=125,top=50,scrollbars=yes");
	else if(clickfrom == "member")
		window.open("member_welcome_popup.php","member","width=600,height=350,left=125,top=50,scrollbars=yes");
	else if(clickfrom == "glide")
		window.open("glide_member_popup.php","glide","width=750,height=550,left=125,top=50,scrollbars=yes");
	else if(clickfrom == "glideeco")
		window.open("glide_e_member_popup.php","glideeco","width=750,height=550,left=125,top=50,scrollbars=yes");
	else if(clickfrom == "terms")
		window.open("terms-of-use.php","terms","width=600,height=520,left=125,top=50,scrollbars=yes");
	else if(clickfrom == "contact")
		window.open("contact.php","contact","width=300,height=250,left=125,top=50,scrollbars=yes");
	else if(clickfrom == "privacy")
		window.open("privacy-policy.php","Privacy","width=595,height=420,left=125,top=50,scrollbars=yes");
	else if(clickfrom == "refund")
		window.open("refund-policy.php","Refund","width=595,height=380,left=125,top=50,scrollbars=yes");
}