function IsNumeric(sText)
{
	var ValidChars = "0123456789";
	var IsNumber=true;
	var Char;
	for (i = 0; i < sText.length && IsNumber == true; i++) 
	{ 
		Char = sText.charAt(i); 
	      if (ValidChars.indexOf(Char) == -1) 
	      {
	        	IsNumber = false;
	      }
	} 
	return IsNumber;
}
function trim(str) 
{ 
	var newstr;
  	newstr = str.replace(/^\s*/, "").replace(/\s*$/, "");
   	return newstr;
}
function checkemail(email)
{
 	var l=email.length; 
 	var p=email.indexOf('@');
 	var q=email.indexOf('.');
 
 	if(p==(q+1) || q==(p+1) || p==(l-1) || q==(l-1) || p==0 || q==0 || p==-1 || q==-1)
 	{ 
		return false;
 	}
 	return true;
}

function checkSelects(selRef)
{
  	for (var i=selRef.options.length-1; i >= 0;i--)
  	{
   		if (selRef.options[i].selected && selRef.options[0].selected) 
   		{
   	 		selRef.options[i].selected = false;
    		selRef.options[0].selected = true;
   		}
  	}
}
 
function checkNumeric(passwordVal)
{
	var ctr = 0;
	var str1 = "0123456789";
	for (i=0; i<passwordVal.length; i++)
	{
		if(str1.indexOf(passwordVal.substring(i,i+1)) > -1) 
		{
			ctr=ctr+1;
		}
	}
	if (ctr == 0) {return false;}
	return true;
}

function validatecard(strCardNo,strCardType)
{	
	var valid=false;
	if (!IsNumeric(strCardNo)) return false;
	switch(strCardType.toUpperCase())
	{ 
		case "MC" : if (strCardNo.length==16&&strCardNo.substring(0,2)>="51"&&strCardNo.substring(0,2)<="55")	valid=true; break;
	  	case "VS" : if ((strCardNo.length==16||strCardNo.length==13)&&strCardNo.substring(0,1)=="4") valid=true; break;
		case "AX" : if (strCardNo.length==15&&(strCardNo.substring(0,2)=="34"||strCardNo.substring(0,2)=="37")) valid=true; break;
		case "DC" : if (strCardNo.length==14&&((strCardNo.substring(0,3)>="300"&&strCardNo.substring(0,3)<="305")||(strCardNo.substring(0,2)=="36")||(strCardNo.substring(0,2)=="38"))) valid=true; break;
		default : return true;  // cannot verify, so assume it is correct
	}
	return (valid?applymask(strCardNo):false);
}

function applymask(num)
{ 
	var mask = "2121212121212121";
	var checksum = 0;
	var leadingzeros = "";
	for (i=0;i<16-num.length;i++) leadingzeros+="0";
	num = leadingzeros + num;
	if (num.length<13) return false;		
	for (count = 1; count<= 16; count++) 
	{	prodval=num.charAt(count-1) * mask.charAt(count-1);
		if (prodval>9) prodval-=9;
		checksum+=prodval;
	}
	return (checksum%10==0);
}

function IsNumeric(sText)
{ 
	var ValidChars = "0123456789";
  	var IsNumber = true;
  	for (i = 0; i < sText.length && IsNumber == true; i++)
  	{ 
  		if (ValidChars.indexOf(sText.charAt(i)) == -1) IsNumber=false;
  	}
	return IsNumber;
}

function getCV2Length(type)
{        
	var mlength = 4;
    switch (type)
    { 
    	case "AX" : mlength = 4; break;
        case "MC" : mlength = 3; break;
        case "VS" : mlength = 3; break;
        case "DC" : mlength = 3; break;
        default   : mlength = 4; break;
    } 
    return mlength;
}

function validateCardExpiryDate()
{         
	var valid = true;
    var stDate = new Date();
    var CmonthIdx = document.getElementById("CC_ExpireMonth").selectedIndex;
    var Cmonth = document.getElementById("CC_ExpireMonth").options[CmonthIdx].text;
    var CyearIdx = document.getElementById("CC_ExpireYear").selectedIndex;
    var Cyear = document.getElementById("CC_ExpireYear").options[CyearIdx].text;
		  
    // function getFullYear must be used because of Netscape...Can't handle getYear

	if (Cmonth==""||Cyear=="") valid = false;
    else if (Cmonth < (stDate.getMonth() + 1) && Cyear <= (stDate.getFullYear())) valid = false;
    return valid;
}

function validateDebitCardExpiryDate()
{         
	var valid = true;
    var stDate = new Date();
    var CmonthIdx = document.getElementById("DC_ExpireMonth").selectedIndex;
    var Cmonth = document.getElementById("DC_ExpireMonth").options[CmonthIdx].text;
    var CyearIdx = document.getElementById("DC_ExpireYear").selectedIndex;
    var Cyear = document.getElementById("DC_ExpireYear").options[CyearIdx].text;
		  
    // function getFullYear must be used because of Netscape...Can't handle getYear

	if (Cmonth==""||Cyear=="") valid = false;
    else if (Cmonth < (stDate.getMonth() + 1) && Cyear <= (stDate.getFullYear())) valid = false;
    return valid;
}

function ShowCCData(form_type)
{
	/*if(form_type == 'Package')
	{
		
	}
	else if(form_type == 'Renewal' || form_type == 'Profile')
	{
		HideDebitData();
		HideChequeData();
	}*/
	HideDebitData();
	HideChequeData();
	HideBankTransferData()
	document.getElementById("ShowData").style.visibility = 'visible';
	document.getElementById("ShowData").style.display = 'block';
}

function HideCCData()
{
	document.getElementById("ShowData").style.visibility = 'hidden';
	document.getElementById("ShowData").style.display = 'none';
}

function ShowDebitData()
{
	/*if(form_type == 'Package')
	{
		
	}
	else if(form_type == 'Renewal' || form_type == 'Profile')
	{
		HideCCData();
		HideChequeData();
	}*/
	HideCCData();
	HideChequeData();
	HideBankTransferData()
	document.getElementById("ShowDCData").style.visibility = 'visible';
	document.getElementById("ShowDCData").style.display = 'block';
}

function HideDebitData()
{
	document.getElementById("ShowDCData").style.visibility = 'hidden';
	document.getElementById("ShowDCData").style.display = 'none';
}

function ShowChequeData()
{
	HideCCData();
	HideDebitData();
	HideBankTransferData()
	document.getElementById("ShowCQData").style.visibility = 'visible';
	document.getElementById("ShowCQData").style.display = 'block';
}

function HideChequeData()
{
	document.getElementById("ShowCQData").style.visibility = 'hidden';
	document.getElementById("ShowCQData").style.display = 'none';
}
function ShowBankTransferData()
{
	HideCCData();
	HideDebitData();
	HideChequeData();
	document.getElementById("ShowBTData").style.visibility = 'visible';
	document.getElementById("ShowBTData").style.display = 'block';
}

function HideBankTransferData()
{
	document.getElementById("ShowBTData").style.visibility = 'hidden';
	document.getElementById("ShowBTData").style.display = 'none';
}

function checkPhone(data)
{
	var ValidChars = "0123456789+-";
  	var IsNumber = true;
  	for (i = 0; i < data.length && IsNumber == true; i++)
  	{ 
  		if (ValidChars.indexOf(data.charAt(i)) == -1) IsNumber=false;
  	}
	return IsNumber;
}

function checkMultiSelectMinOptions(dropobject,minselect)
{
	var objDropDown = dropobject;
	var count = 0;
	for(i=0;i<objDropDown.options.length;i++)
	{	
		if(objDropDown.options[i].selected == true)
		count = count + 1;
	}
	if(count < minselect){return false;}
	else{return true;} 
}

function checkMultiSelectMaxOptions(dropobject,maxselect)
{
	var objDropDown = dropobject;
	var count = 0;
	for(i=0;i<objDropDown.options.length;i++)
	{	
		if(objDropDown.options[i].selected == true)
		count = count + 1;
	}
	if(count > maxselect){return false;}
	else{return true;} 
}

function checkMultiSelectOptions(dropobject)
{
	var objDropDown = dropobject;
	var all = false;
	var others = false;
	for(i=0;i<objDropDown.options.length;i++)
	{	
		if(objDropDown.options[i].selected == true)
		{
			if(objDropDown.value == '') all = true;
			if(objDropDown.options[i].value != '')	others = true;
		}
	}
	if(all && others){return false;}
	else{return true;} 
}

function isURL(urlStr) 
{
	if (urlStr.indexOf(" ") != -1) 
	{
		//alert("Spaces are not allowed in a URL");
		return false;
	}
	
	if (urlStr == "" || urlStr == null) 
	{
		return true;
	}
	
	urlStr=urlStr.toLowerCase();
	
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var atom=validChars + '+';
	var urlPat=/^http:\/\/(\w*)\.([\-\+a-z0-9]*)\.(\w*)/;
	var matchArray=urlStr.match(urlPat);
	
	if (matchArray==null) 
	{
		//alert("The URL seems incorrect \ncheck it begins with http://\n and it has 2 .'s");
		return false;
	}
	
	var user=matchArray[2];
	var domain=matchArray[3];
	
	for (i=0; i<user.length; i++) 
	{
		if (user.charCodeAt(i)>127) 
		{
			//alert("This domain contains invalid characters.");
			return false;
		}
	}
	
	for (i=0; i<domain.length; i++) 
	{
		if (domain.charCodeAt(i) > 127) 
		{
			//alert("This domain name contains invalid characters.");
			return false;
		}
	}
	
	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;
		}
	}
	return true;
} 

function calcCharLen(sForm, sTextArea, sTextInput, iMaxLimit)
{
	var _oDF        = document.forms[sForm];
	var _oTxtA      = _oDF.elements[sTextArea];
	var _iMaxLength = (!iMaxLimit) ? 0 : iMaxLimit;
	var _iCharLeft  = _oTxtA.value.length;

	_oDF.elements[sTextInput].value = _iCharLeft;

	if(_iCharLeft > _iMaxLength)
	{
		_oTxtA.value = _oTxtA.value.substring(0, _iMaxLength);
		_oDF.elements[sTextInput].value = _iMaxLength;
		alert('You can enter only '+_iMaxLength+' characters.');
	}
}