/*
function MM_findObj(n, d) {
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers(mylayer) { //v6.0
  var i,j,v,obj;//,args=MM_showHideLayers.arguments;
  layers = new Array ('home','newsletters','showsandevents','research','downloads','classifieds','subscribe','archives');

  //определяем размеры меню
  layerW = new Array (100,100,100,100,100,100,100,100);

  //отступы для слоев (абсолютные относительно leftMargin)
  layersMargin = new Array (405,38,93,110,73,84,84,-20);//отступы для слоев (относительные)

  //определяем размеры окна

  var layerMargin = 0;
  for (i=0; i<(layers.length); i++)
  {
    if ((obj=MM_findObj(layers[i]))!=null)
    {
      if (obj.style)
      {
          obj=obj.style;
          if (layers[i] == mylayer)
          {
            v='visible';
            for (j = 0; j <= i; j++)
              layerMargin += layersMargin[j];
            obj.width = layerW[i];
          }
          else
            v='hidden';
      }      
      obj.visibility=v;
      obj.left = layerMargin;
    }
  }
}
*/
arrCantHide = new Array();

function showme(obj){
	
	arrDivs = new Array('m_home', 'm_newsletter', 'm_shows', 'm_arch', 'm_res', 'm_downloads', 'm_class', 'm_sub');
	layersMargin = new Array (405,38,93,110,73,84,84,-80);
	
	//layersMargin = new Array (1000,2000,3000,4100,5730,6840,7840,8800);
	len	= arrDivs.length
	
	for(i=0;i<len;i++){
		temp_obj = document.getElementById(arrDivs[i]);
		if(temp_obj == null){
			continue
		}
		sub_divs = temp_obj.getElementsByTagName('div');
		if(!sub_divs.length){
			continue
		}
		layerMargin = 0
		if(temp_obj == obj){			
			strVisiblility  = 'visible'
			for (j = 0; j <= i; j++){
              layerMargin += layersMargin[j];
			}
			_className = 'm_menu_block_div_active'
		}else{
			_className = 'm_menu_block_div'
			strVisiblility  = 'hidden'
		}
		_div = sub_divs[0]
		_div.visiblility  = strVisiblility
		_div.className= _className
		_div.left = layerMargin
	}
}

function HideIt(pid){	
	len = arrCantHide.length	
	for(i=0;i<len;i++){
		if(arrCantHide[i] == pid){
			return
		}
	}
	obj = document.getElementById(pid)
	_div = obj.getElementsByTagName('div')
	_div = _div[0]
	_div.className = 'm_menu_block_div'
}

function hideme(obj){
	window.setTimeout('HideIt("'+obj.id+'")',500);
}

function makeunhide(obj){
	pdiv = obj.parentNode
	arrCantHide.push(pdiv.id)
}

function makehide(obj){	
	pdiv = obj.parentNode
	len = arrCantHide.length
	newArr = new Array()
	for(i=0;i<len;i++){
		if(arrCantHide[i] != pdiv.id){
			newArr.push(arrCantHide[i])
		}
	}
	arrCantHide = newArr
	window.setTimeout('HideIt("'+pdiv.id+'")',500);
}




//Javascript File
//Author:Kalpesh Joshi
//Created on: 14th April 2008


function checkMandatoryDropDown(p_objControl,p_strColumnName)
{
    if ((p_objControl.value==null) || (p_objControl.value=="") )
    {
		alert("Please Select " + p_strColumnName);
        p_objControl.focus();
        return false;
    } 
    if (p_objControl.selectedIndex==0)
    {
		alert("Please Select " + p_strColumnName);
        p_objControl.focus();
        return false;
    } 
    return true;
}

function checkAlphabetic(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);	
	//alert(p_objControl.value);
	if (!IsAlphabetic(p_objControl.value))
	{
		// Alerting the User that the Column being checked can contain only Alphabets
		alert(p_strColumnName + " can contain only alphabetical characters");
		p_objControl.focus();
		p_objControl.select();
		return false
	}
	else
	{
		return true;
	}
}

function jm_Phnmask(t)
{var patt = /(\d{3}).*(\d{3}).*(\d{4})/;
var donepatt = /^(\d{3})-(\d{3})-(\d{4})$/;
var str = t.value;
var result;
if (!str.match(donepatt))
{result = str.match(patt);
if (result!= null)
{t.value = t.value.replace(/[^\d]/gi,'');
str = result[1] + '-' + result[2] + '-' + result[3];
t.value = str;
//document.form1.homephone.style.backgroundColor="white";
}else{
if (t.value.match(/[^\d]/gi))
t.value = t.value.replace(/[^\d]/gi,'');}
}}


function checkMandatory(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	if ("" == p_objControl.value || null == p_objControl.value)
	{
		// Alerting the User that the Column being checked cannot be blank
		alert("Please Enter " + p_strColumnName);
		if (false == p_objControl.disabled)
		{
			p_objControl.focus();
		}
		return false;
	}
	else
	{
		return true;
	}
}

function checkMandatoryAlphabetic(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	if (!checkMandatory(p_objControl, p_strColumnName))
	{
		return false;
	}
	else
	{
		if (!IsAlphabetic(p_objControl.value))
		{
			// Alerting the User that the Column being checked can contain only Alphabets
			alert(p_strColumnName + " can contain only alphabetical characters");
			p_objControl.focus();
			p_objControl.select();
			return false
		}
		else
		{
			return true;
		}
	}
}

function checkMandatoryName(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	if (!checkMandatory(p_objControl, p_strColumnName))
	{
		return false;
	}
	else
	{
		if (!IsName(p_objControl.value))
		{
			// Alerting the User that the Column being checked can contain only Alphabets
			alert(p_strColumnName + " can contain only Alphabets, Numbers, '.','_',' ' '  ");
			p_objControl.focus();
			p_objControl.select();
			return false
		}
		else
		{
			return true;
		}
	}
}
function checkMandatoryAddress(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	if (!checkMandatory(p_objControl, p_strColumnName))
	{
		return false;
	}
	else
	{
		if (!IsAddress(p_objControl.value))
		{
			// Alerting the User that the Column being checked can contain only Alphabets
			alert(p_strColumnName + " can contain only Alphabets");
			p_objControl.focus();
			p_objControl.select();
			return false
		}
		else
		{
			return true;
		}
	}
}

function checkMandatoryAlphanumeric(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	if (!checkMandatory(p_objControl, p_strColumnName))
	{
		return false;
	}
	else
	{
		// Checking for Alphanumeric Value
		if (!IsAlphanumeric(p_objControl.value))
		{
			// Alerting the User that the Column being checked can contain only Alphabets and numbers
			alert(p_strColumnName + " can contain only Alphabets and Numbers");
			p_objControl.focus();
			p_objControl.select();
			return false
		}
		else
		{
			return true;
		}
	}
}

function checkValidAlphanumeric(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	if (p_objControl.value != "") 
	{
	// Checking for Alphanumeric Value	
		if (!IsAlphanumeric(p_objControl.value))
		{
			// Alerting the User that the Column being checked can contain only Alphabets and numbers
			alert(p_strColumnName + " can contain only Alphabets and Numbers");
			p_objControl.focus();
			p_objControl.select();
			return false
		}
	}
	return true;		
}

function checkMandatoryNumeric(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	if (!checkMandatory(p_objControl, p_strColumnName))
	{
		return false;
	}
	else
	{
		if (!IsNumeric(p_objControl.value))
		{
			// Alerting the User that the Column being checked can contain only numerical values
			alert(p_strColumnName + " can contain only Numbers and '.'");
			p_objControl.focus();
			p_objControl.select();
			return false
		}
		else
		{
			return true;
		}
	}
}

function checkValidNumeric(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	
	if (!checkMandatory(p_objControl, p_strColumnName))
	{
		return false;
	}
	else
	{
	// Triming to remove leading and trailing spaces
	var l_strNumber = p_objControl.value;
	var l_blnIsValidNumeric = true;
	if (null != l_strNumber)
	{
		if ("" != l_strNumber)
		{
			if (false == IsNumeric(l_strNumber))
			{
				alert(p_strColumnName + " can contain only numbers");
				p_objControl.focus();
				p_objControl.select();
				return false;
			}
		}
	}
	return true;			
	}
}


function checkVaildCVVNumber(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	
	if (!checkValidNumeric(p_objControl, p_strColumnName))
	{
		return false;
	}
    else
    {
         if (p_objControl.value.length <= 2 )
			 {
		 	        alert("Invalid " + p_strColumnName);
			        p_objControl.focus();
			        p_objControl.select();
			        return false
			 }
			 else
			 {
			 return true;
			 }
    
    }

}

function checkMandatoryNumericZip(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	if (!checkMandatory(p_objControl, p_strColumnName))
	{
		return false;
	}
	else
	{
		if (!IsNumeric(p_objControl.value))
		{
			// Alerting the User that the Column being checked can contain only numerical values
			alert(p_strColumnName + " can contain only Numbers.");
			p_objControl.focus();
			p_objControl.select();
			return false
		}
		
		else
		{
			 if (p_objControl.value.length != 5)
			 {
		 	        alert("Invalid " + p_strColumnName);
			        p_objControl.focus();
			        p_objControl.select();
			        return false
			 }
			 else
			 {
			 return true;
			 }
		}		
	}
}


function checkMandatoryNumericPhone(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	if (!checkMandatory(p_objControl, p_strColumnName))
	{
		return false;
	}
	else
	{
		if (!IsNumeric(p_objControl.value))
		{
			// Alerting the User that the Column being checked can contain only numerical values
			alert(p_strColumnName + " can contain only Numbers.");
			p_objControl.focus();
			p_objControl.select();
			return false
		}
		
		else
		{
			 if (p_objControl.value.length < 3)
			 {
		 	        alert("Invalid " + p_strColumnName);
			        p_objControl.focus();
			        p_objControl.select();
			        return false
			 }
			 else
			 {
			 return true;
			 }
		}		
	}
}


function checkMandatoryNumericPhone4(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	if (!checkMandatory(p_objControl, p_strColumnName))
	{
		return false;
	}
	else
	{
		if (!IsNumeric(p_objControl.value))
		{
			// Alerting the User that the Column being checked can contain only numerical values
			alert(p_strColumnName + " can contain only Numbers.");
			p_objControl.focus();
			p_objControl.select();
			return false
		}
		
		else
		{
			 if (p_objControl.value.length < 4)
			 {
		 	        alert("Invalid " + p_strColumnName);
			        p_objControl.focus();
			        p_objControl.select();
			        return false
			 }
			 else
			 {
			 return true;
			 }
		}		
	}
}

function checkMandatoryEmail(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	if (!checkMandatory(p_objControl, p_strColumnName))
	{
		return false;
	}
	else
	{
		/* if (checkValidEmail(p_objControl) == false) */
		if (emailCheck(p_objControl.value) == false)
		{
			alert("Invalid Email Address");
			p_objControl.focus();
			p_objControl.select();
			return false;
		}
		else
		{
			return true;
		}
	}
}



function checkValidEmail(p_objControl)
{
	p_objControl.value = Trim(p_objControl.value);
	// Triming to remove leading and trailing spaces
	var l_strEmail = p_objControl.value;
	var l_blnIsValidEmail = true;
	if (null != l_strEmail)
	{
		if ("" != l_strEmail)
		{
			var l_intSymbolAt = l_strEmail.indexOf('@');
			var l_intLastDotAt = l_strEmail.lastIndexOf('.');
			var l_intSpaceAt = l_strEmail.indexOf(' ');
			var l_intLength = l_strEmail.length;

			// at least one @ must be present and not before position 2
			// @yellow.com : NOT valid
			// x@yellow.com : VALID
			if (l_intSymbolAt < 1 ) 
			{
				l_blnIsValidEmail = false;
			}

			// at least one . (dot) afer the @ and atleast one character is required
			// x@yellow : NOT valid
			// x.y@yellow : NOT valid
			// x@yellow.org : VALID
			if (l_intLastDotAt < l_intSymbolAt + 1) 
			{
				l_blnIsValidEmail = false;
			}

			// atleast two characters [in, com, info, ...] must occur after the last . (dot)
			// x.y@yellow. : NOT valid
			// x.y@yellow.a : NOT valid
			// x.y@yellow.ca : VALID
			if ((l_intLength - l_intLastDotAt) <= 2)
			{
				l_blnIsValidEmail = false;
			}
			
			// no empty space " " is permitted
			// x.y@yell ow.com : NOT valid
			if (l_intSpaceAt != -1) 
			{
				l_blnIsValidEmail = false;
			}
		}
	}

	if (!l_blnIsValidEmail)
	{
		// Alerting the User that the Column being checked should contain a valid email 
		alert("Invalid Email Address");
		p_objControl.focus();
		p_objControl.select();
		return false;
	}
	else 
	{
		return true;
	}
}

function checkMandatoryPhoneNo(p_objControl, p_strColumnName)
{
     if ((p_objControl.value==null)||(p_objControl.value==""))
     {
          alert("Please Enter " + p_strColumnName);
          p_objControl.focus();
          return false;
     }
     if (checkInternationalPhone(p_objControl.value)==false)
     {
          alert("Please Enter a Valid " + p_strColumnName);
          p_objControl.focus();
          p_objControl.select();
          return false;
     }
     return true;
}





function LTrim(sTargetString)
{
	var i ;
	var len ;
	var iIndexOfNonBlank ;
	var sResultString ;
	
	len = sTargetString.length ;
	for (i=0; i < len; i++)
	    {
		if (sTargetString.charAt(i) != ' ')
		   break ;
	    }
	sResultString = sTargetString.substring(i, len) ;
	return sResultString ;
}


function RTrim(sTargetString)
{
	var i ;
	var len ;
	var iIndexOfNonBlank ;
	var sResultString ;
	
	len = sTargetString.length ;
	for (i=len-1; i>=0; i--)
	    {
		if (sTargetString.charAt(i) != ' ')
		   break ;
	    }
	sResultString = sTargetString.substring(0, i + 1) ;
	return sResultString ;
}


function Trim(sTargetString)
{
	var sResultString ;
	sResultString = LTrim(sTargetString) ;
	sResultString = RTrim(sResultString) ;
	return sResultString ;	
}



function checkMandatoryInteger(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	if (!checkMandatory(p_objControl, p_strColumnName))
	{
		return false;
	}
	else
	{
		if (!IsInteger(p_objControl.value))
		{
			// Alerting the User that the Column being checked can contain only Numerical values
			alert(p_strColumnName + " can contain only Numbers");
			p_objControl.focus();
			p_objControl.select();
			return false
		}
		else
		{
			return true;
		}
	}
}


function checkValidInteger(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	// Triming to remove leading and trailing spaces
	var l_strNumber = p_objControl.value;
	if (null != l_strNumber)
	{
		if ("" != l_strNumber)
		{
			if (false == IsInteger(l_strNumber))
			{
				alert(p_strColumnName + " can contain only numbers");
				p_objControl.focus();
				p_objControl.select();
				return false;
			}
		}
	}
	return true;			

}


 
function checkInternationalPhone(strPhone)
{
	// non-digit characters which are allowed in phone numbers
	var phoneNumberDelimiters = "()- ";
	// characters which are allowed in international phone numbers
	// (a leading + is OK)
	var validWorldPhoneChars = phoneNumberDelimiters + "+";
	// Minimum no of digits in an international phone no.
	var minDigitsInIPhoneNumber = 10;

	s=stripCharsInBag(strPhone, validWorldPhoneChars);
	return (IsInteger(s) && s.length == minDigitsInIPhoneNumber);
}

// Function to check for values other than the Delimiters
function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not 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) returnString += c;
    }
    return returnString;
}
// End of stripCharsInBag()

// Function to Validate characters in Names
function IsName(p_strName)
{
	// Storing valid range of characters
	str_upperalpha = " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'.-";
	// Storing the length of the string
	int_length = p_strName.length ;

	// Checking values in string
	for (i=0;i<=(int_length-1);i++)
	{
		// Comparing character at current position with valid set of values
		int_pos = str_upperalpha.indexOf(p_strName.charAt(i)) ;
		if (int_pos <0)
		{
			return false ;
			break ;
		}
	}
	return true ;
}
// End of IsAddress


function IsEmail(p_strName)
{
	// Storing valid range of characters
	str_upperalpha = " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-_@";
	// Storing the length of the string
	int_length = p_strName.length ;

	// Checking values in string
	for (i=0;i<=(int_length-1);i++)
	{
		// Comparing character at current position with valid set of values
		int_pos = str_upperalpha.indexOf(p_strName.charAt(i)) ;
		if (int_pos <0)
		{
			return false ;
			break ;
		}
	}
	return true ;
}

// Function to Validate characters in Names
function IsAddress(p_strName)
{
	// Storing valid range of characters
	str_upperalpha = " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'./,#-";
	// Storing the length of the string
	int_length = p_strName.length ;

	// Checking values in string
	for (i=0;i<=(int_length-1);i++)
	{
		// Comparing character at current position with valid set of values
		int_pos = str_upperalpha.indexOf(p_strName.charAt(i)) ;
		if (int_pos <0)
		{
			return false ;
			break ;
		}
	}
	return true ;
}
// End of IsAddress

// End of Scripts used in Masters

function IsAlphabetic(in_name)
{
	
	str_upperalpha = " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" ;
	int_length = in_name.length ;

	
	for (i=0;i<=(int_length-1);i++)
	   {
	
    		int_pos = str_upperalpha.indexOf(in_name.charAt(i)) ;
		if (int_pos <0)
		  {
		    return false ;
		    break ;
		  }
	   }
	return true ;
}

function IsAlphanumeric(in_name)
{
	str_upperalpha = " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890.&-()/\ "
	int_length = in_name.length
	
	for (i=0;i<=(int_length-1);i++)
	    {
    		int_pos = str_upperalpha.indexOf(in_name.charAt(i)) ;
    		if (int_pos <0)
       		   {
		     return false ;
		     break ;
       		   }
	    }
	return true ;
}


function IsNumeric(in_name)
{
	str_upper = "1234567890" ;
	int_length = in_name.length ;
	
	for (i=0;i<=(int_length-1);i++)
	    {
    		int_pos = str_upper.indexOf(in_name.charAt(i)) ;
		if (int_pos <0)
		  {
		    return false ;
		    break ;
		  }
	    }
	return true ;
}


function IsInteger(in_name)
{
	str_upper = "1234567890" ;
	int_length = in_name.length ;
	
	for (i=0;i<=(int_length-1);i++)
	{
    	int_pos = str_upper.indexOf(in_name.charAt(i)) ;
		if (int_pos <0)
		{
			return false ;
			break ;
		}
	}
	
	return true ;
}


function ConvertToUpperCase(p_objControl)
{
  p_objControl.value = Trim(p_objControl.value);
	if ("" != p_objControl.value || null != p_objControl.value)
		{
		 p_objControl.value= p_objControl.value.toUpperCase();
		// alert('Success');
		}
}


function checkName(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);	
		// Checking for Name Value
		if (!IsName(p_objControl.value))
		{
			// Alerting the User that the Column being checked can contain only Names
			alert(p_strColumnName + " can contain only valid Name Characters");
			p_objControl.focus();
			p_objControl.select();
			return false
		}
		// Valid Name Value
		else
		{
			return true;
		}
}

function checkAddress(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	
	
		// Checking for Name Value
		if (!IsAddress(p_objControl.value))
		{
			// Alerting the User that the Column being checked can contain only Names
			alert(p_strColumnName + " can contain only valid Address Characters");
			p_objControl.focus();
			p_objControl.select();
			return false
		}
		// Valid Name Value
		else
		{
			return true;
		}
}

function checkAlphanumeric(p_objControl, p_strColumnName)
{
	p_objControl.value = Trim(p_objControl.value);
	

if (!IsAlphanumeric(p_objControl.value))
		{
			//alert("i am here")	
			// Alerting the User that the Column being checked can contain only Alphabets and numbers
			alert(p_strColumnName + " can contain only Alphabets and Numbers");
			p_objControl.focus();
			p_objControl.select();
			return false
		}
		// Valid Alphanumeric Value
		else
		{
			return true;
		}
}

function checkInValidLength(p_objControl, p_strColumnName, p_intlen)
{
	p_objControl.value = Trim(p_objControl.value);
	// Checking for particular character
	if (eval(p_objControl.value.length)!=p_intlen)
	{
		// Alerting the User that the Column being checked  has Invalid length
		alert(p_strColumnName + " length is Invalid");
		p_objControl.focus();
		p_objControl.select();
		return false
	}
	else
	{
		return true;
	}
}

// LUHN Formula for validation of credit card numbers.
function mod10( cardNumber ) 
{ 
	var ar = new Array( cardNumber.length );
	var i = 0,sum = 0;
	
	for( i = 0; i < cardNumber.length; ++i ) 
	{
		ar[i] = parseInt(cardNumber.charAt(i));
	}
	for( i = ar.length -2; i >= 0; i-=2 )    // you have to start from the right, and work back.
	{
	    ar[i] *= 2;							 // every second digit starting with the right most (check digit)
		if( ar[i] > 9 ) ar[i]-=9;			 // will be doubled, and summed with the skipped digits.
	}										 // if the double digit is > 9, ADD those individual digits together


	for( i = 0; i < ar.length; ++i ) 
	{
		sum += ar[i];						 // if the sum is divisible by 10 mod10 succeeds
	}
	    return (((sum%10)==0)?true:false);
    }



function validateCard(cardNumber,cardType) 
{
	for( var i = 0; i < cardNumber.length; ++i ) // make sure the number is all digits.. (by design)
	{		
	    var c = cardNumber.charAt(i);
    	if( c < '0' || c > '9' ) 
    	{
    	    //	alert("Please enter a valid card number. Use only digits. do not use spaces or hyphens.");
			return false;
		}
 	}
	var length = cardNumber.length;			//perform card specific length and prefix tests

	switch( cardType ) 
	{
		case 'AmericanExpress':
    	if( length != 15 ) 
    	{                    				//alert("Please enter a valid American Express Card number.");
    		return false;
		}
		var prefix = parseInt( cardNumber.substring(0,2));
		if( prefix != 34 && prefix != 37 ) 
		{
			//alert("Please enter a valid American Express Card number.");
			return false;
		}
		    break;
    	    break;
    	case 'MasterCard':
    	if( length != 16 ) 
    	{
			//alert("Please enter a valid MasterCard number.");
            return false;
		}
		var prefix = parseInt( cardNumber.substring(0,2));
		if( prefix < 51 || prefix > 55) 
		{
			//alert("Please enter a valid MasterCard Card number.");
			return false;
		}
		    break;
		case 'Visa':
		if( length != 16 && length != 13 ) 
		{
			//alert("Please enter a valid Visa Card number.");
			return false;
		}
		var prefix = parseInt( cardNumber.substring(0,1));
		if( prefix != 4 ) 
		{
			//alert("Please enter a valid Visa Card number.");
			return false;
		}
		break;
    	}
    	if( !mod10( cardNumber ) ) // run the check digit algorithm
    	{ 		
    	//	alert("Sorry! this is not a valid credit card number.");
    		return false;
    	}
        	return true; // at this point card has not been proven to be invalid  		
}


function checkMandatoryCreditCard(p_objCardType, p_strCardTypeName, p_objCardNunber, p_strCardNumber)
{
	p_objCardType.value = Trim(p_objCardType.value);
	p_objCardNunber.value = Trim(p_objCardNunber.value);
	
	if (!checkMandatoryDropDown(p_objCardType, p_strCardTypeName))
	{
		return false;
	}
	
	if (!checkMandatory(p_objCardNunber, p_strCardNumber))
	{
		return false;
	}
	else
	{
		if (!validateCard(p_objCardNunber.value, p_objCardType.value))
		{
		alert("Invalid Credit Card Number");
			return false;
		}
		else
		{
			return true;
		}
	}
}

function expired( month, year )
    {
        var now = new Date();
        var expiresIn = new Date(year,month,0,0,0);
        expiresIn.setMonth(expiresIn.getMonth());
        if( now.getTime() < expiresIn.getTime() ) return false;
        return true;
    }

function compareDates(value1, value2) 
{
//alert( value1 +    "  ///////  " + value2);
   var date1, date2;
   var month1, month2;
   var year1, year2;
   var seperator = "/";

   date1 = eval(value1.substring (0, value1.indexOf (seperator)));
   month1 = eval(value1.substring (value1.indexOf (seperator)+1, value1.lastIndexOf (seperator)));
   year1 = eval(value1.substring (value1.lastIndexOf (seperator)+1, value1.length));

   date2 = eval(value2.substring (0, value2.indexOf (seperator)));
   month2 = eval(value2.substring (value2.indexOf (seperator)+1, value2.lastIndexOf (seperator)));
   year2 = eval(value2.substring (value2.lastIndexOf (seperator)+1, value2.length));

   if (year1 > year2) return 1;
   else if (year1 < year2) return -1;
   else if (month1 > month2) return 1;
   else if (month1 < month2) return -1;
   else if (date1 > date2) return 1;
   else if (date1 < date2) return -1;
   else return 0;
} 

function FormatDateToMMDDYY(p_value)
{
	var strDate = Trim(p_value);
	var arr = strDate.split("-")
	if (arr.length > 2)
	{
		strDate = arr[1]+"/"+arr[0]+"/"+arr[2];
	}
	return strDate;
}


function CheckDate(p_objControl)
{
var CurrentDate
var today = new Date();
var aceYear=today.getYear()
var aceMonth=today.getMonth()+1
var aceDayMonth=today.getDate()
CurrentDate = aceMonth +"-"+aceDayMonth+"-"+ aceYear

if(Date.parse(p_objControl.value) <= Date.parse(CurrentDate))
{
    alert("Date Must Greater then Current Date");
    p_objControl.focus();
    return false;
}
else
{
    return true;
}

}




/* ***************** VALIDATE MAIL ID  */


function emailCheck (emailStr) {

/* The following variable tells the rest of the function whether or not
to verify that the address ends in a two-letter country or well-known
TLD.  1 means check it, 0 means don't. */

var checkTLD=1;

/* The following is the list of known TLDs that an e-mail address must end with. */

var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|coop|info|pro)$/;

/* The following pattern is used to check if the entered e-mail address
fits the user@domain format.  It also is used to separate the username
from the domain. */

var emailPat=/^(.+)@(.+)$/;

/* The following string represents the pattern for matching all special
characters.  We don't want to allow special characters in the address. 
These characters include ( ) < > @ , ; : \ " . [ ] */

var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

/* The following string represents the range of characters allowed in a 
username or domainname.  It really states which chars aren't allowed.*/

var validChars="\[^\\s" + specialChars + "\]";

/* The following pattern applies if the "user" is a quoted string (in
which case, there are no rules about which characters are allowed
and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
is a legal e-mail address. */

var quotedUser="(\"[^\"]*\")";

/* The following pattern applies for domains that are IP addresses,
rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
e-mail address. NOTE: The square brackets are required. */

var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

/* The following string represents an atom (basically a series of non-special characters.) */

var atom=validChars + '+';

/* The following string represents one word in the typical username.
For example, in john.doe@somewhere.com, john and doe are words.
Basically, a word is either an atom or quoted string. */

var word="(" + atom + "|" + quotedUser + ")";

// The following pattern describes the structure of the user

var userPat=new RegExp("^" + word + "(\\." + word + ")*$");

/* The following pattern describes the structure of a normal symbolic
domain, as opposed to ipDomainPat, shown above. */

var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

/* Finally, let's start trying to figure out if the supplied address is valid. */

/* Begin with the coarse pattern to simply break up user@domain into
different pieces that are easy to analyze. */

var matchArray=emailStr.match(emailPat);

if (matchArray==null) {

/* Too many/few @'s or something; basically, this address doesn't
even fit the general mould of a valid e-mail address. */

//alert("Email address seems incorrect (check @ and .'s)");
return false;
}
var user=matchArray[1];
var domain=matchArray[2];

// Start by checking that only basic ASCII characters are in the strings (0-127).

for (i=0; i<user.length; i++) {
if (user.charCodeAt(i)>127) {
//alert("Ths username contains invalid characters.");
return false;
   }
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i)>127) {
//alert("Ths domain name contains invalid characters.");
return false;
   }
}

// See if "user" is valid 

if (user.match(userPat)==null) {

// user is not valid

//alert("The username doesn't seem to be valid.");
return false;
}

/* if the e-mail address is at an IP address (as opposed to a symbolic
host name) make sure the IP address is valid. */

var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {

// this is an IP address

for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
//alert("Destination IP address is invalid!");
return false;
   }
}
return true;
}

// Domain is symbolic name.  Check if it's valid.
 
var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for (i=0;i<len;i++) {
if (domArr[i].search(atomPat)==-1) {
//alert("The domain name does not seem to be valid.");
return false;
   }
}

/* domain name seems valid, but now make sure that it ends in a
known top-level domain (like com, edu, gov) or a two-letter word,
representing country (uk, nl), and that there's a hostname preceding 
the domain or country. */

/*if (checkTLD && domArr[domArr.length-1].length!=2 && */
if (checkTLD && domArr[domArr.length-1].search(knownDomsPat)==-1) {
//alert("The address must end in a well-known domain or two letter " + "country.");
return false;
}

// Make sure there's a host name preceding the domain.

if (len<2) {
//alert("This address is missing a hostname!");
return false;
}

// If we've gotten this far, everything's valid!
return true;
}

//  End -->

