///
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
///
// JavaScript Document
function isValidEmail(address) {
   if (address != '' && address.search) {
	  if (address.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) != -1) return true;
	  else return false;
   }
   
   // allow empty strings to return true - screen these with either a 'required' test or a 'length' test
   else return true;
}
//////////////////////////////////////////////////
function isNumeric(string, ignoreWhiteSpace) {
   if (string.search) {
      if ((ignoreWhiteSpace && string.search(/[^\d\s]/) != -1) || (!ignoreWhiteSpace && string.search(/\D/) != -1)) 
	  return false;
   }
   return true;
}
function $(id) {
		return document.getElementById(id);
}
//__________________________________________________________________________________________________________a
  function SendSForm(action){
			var errorMsg="";		
			$("saction").value = action;
			$("catForm").submit();

     }
//__________________________________________________________________________________________________________a
  function SendForm(action){
			var errorMsg="";

	if(action == 'AddingUsers'){
			if ($("firstname").value=="") errorMsg +="\n -Firstname";
			if ($("lastname").value=="") errorMsg +="\n -Last Name";			
			if ($("username").value=="") errorMsg +="\n -User Name.";
			if ($("dname").value=="") errorMsg +="\n -Display Name.";
			if ($("newpass1").value=="") errorMsg +="\n -Password";
			if ($("newpass2").value=="") errorMsg +="\n -Re-Type Password.";
			if ($("newpass1").value!=$("newpass2").value) errorMsg +="\n -Passwords does not much.";
			///if ($("levelx").value=="0") errorMsg +="\n -User Level";
		}
		
		if(action == 'EditingUsers'){
			if ($("dname").value=="") errorMsg +="\n -Display Name";
			if ($("username").value=="") errorMsg +="\n -User Name.";	
			if ($("catForm").enterpass[1].checked == true){
				if ($("password").value=="") errorMsg += "\n -Old Password.";
				if ($("newpass1").value=="") errorMsg += "\n -New Password.";
				if ($("newpass2").value=="") errorMsg += "\n -Re-Type New Password";
				if ($("newpass1").value!=$("newpass2").value)
				{errorMsg += "\n -Passwords does not much.";}
			}
		}
		if(action == 'FinishAdd'){
			cardname = "";
			len = $("catForm").x_card_type.length;
			for (i = 0; i <len; i++) {
				if ($("catForm").x_card_type[i].checked) {
					cardname = $("catForm").x_card_type[i].value
				}
			}
			if (cardname == "") {
				errorMsg +="\n - Card Type";
			}
			
			if ($("x_first_name").value=="") errorMsg +="\n - Card Holder First Name";
			if ($("x_last_name").value=="") errorMsg +="\n - Card Holder Last Name";
			if ($("smounth").value=="0") errorMsg +="\n - Expiration Mounth";
			if ($("ccyear").value=="0") errorMsg +="\n - Expiration Year";
			if ($("x_state").value=="0") errorMsg +="\n - State";
			if ($("x_address").value=="0") errorMsg +="\n - Address";			
			if ($("x_zip").value == "")  errorMsg +="\n - Zip Code";
			if ($("x_phone").value == "")  errorMsg +="\n - Phone";
			if (!isNumeric($("x_card_code").value) || $("x_card_code").value == "")  errorMsg +="\n - Card Security Number";
			if (!checkCreditCard ($("x_card_num").value, cardname)) {
				 errorMsg +="\n - "+ccErrors[ccErrorNo]+"";
			  }

			if ($("terms").checked == false) errorMsg +="\n - Accept the terms and conditions";
		}	
		if(action == 'EditingOrg'){
				if ($("firstname").value=="") errorMsg +="\n -First Name";	
				if ($("lastname").value=="") errorMsg +="\n -Last Name";
				if (!isValidEmail($("email").value) || $("email").value == "") errorMsg +="\n -E-Mail";
				if ($("Country").value=="1228" && $("state").value=="0") errorMsg +="\n -State";	
				if ($("city").value=="") errorMsg +="\n -City";	
				if ($("state").value=="") errorMsg +="\n -State";			
				if ($("zip").value=="") errorMsg +="\n -Zip Code";
		}		
		//categories
		if(action == 'AddingCategories'){
			if ($("name").value=="") errorMsg +="\n -Category Name";
		}		
		if(action == 'EditingCategories'){
			if ($("name").value=="") errorMsg +="\n -Category Name";
		}
		//banners
		if(action == 'AddingBanners'){
			if ($("bantyp").value=="0") errorMsg +="\n -Banner Type";
			if ($("title").value=="") errorMsg +="\n -Banner Title";
			if ($("limit").value=="") errorMsg +="\n -Banner Limit";
		}		
		if(action == 'EditingBanners'){
			if ($("title").value=="") errorMsg +="\n -Banner Title";
			if ($("limit").value=="") errorMsg +="\n -Banner Limit";			
		}		
		if (errorMsg!="")
		{
			errorMsg ="Error\n_____________________________\n" +
			errorMsg + "\n_____________________________\n" +
			"Please Check Above Fields!";		
			alert(errorMsg);
			return;
		}			
	
			$("action").value = action;
			$("catForm").submit();

     }
  function SendWebForm(action){
	var errorMsg="";
		if(action == 'AddingAd'){				
		if ($("period").value == "0")
				{ errorMsg +="\n - Banner Period"; $("period_err").innerHTML="*"} 
			else
				{ errorMsg +=""; $("period_err").innerHTML=""}
		if ($("bannersizetype").value == "0")
				{ errorMsg +="\n - Banner Type"; $("type_err").innerHTML="*"} 
			else
				{ errorMsg +=""; $("type_err").innerHTML=""}
		if ($("file").value == "")
				{ errorMsg +="\n - Banner File"; $("file_err").innerHTML="*"} 
			else
				{ errorMsg +=""; $("file_err").innerHTML=""}
		if ($("url").value == "")
				{
					errorMsg +="\n - Target Url"; $("url_err").innerHTML="*";
					
				} 
			else
				{ errorMsg +=""; $("url_err").innerHTML=""}
		if ($("url").value.substr(0,7)=="http://")
				{
					errorMsg +=""; $("url_err").innerHTML="";	
					
				} 
			else
				{ errorMsg +="\n - Incorrect Target Url"; $("url_err").innerHTML="*"; }				
	}		
		if (errorMsg!=""){
			errorMsg ="Error\n_____________________________\n" +
			errorMsg + "\n_____________________________\n" +
			"Please Check Above Fields!";		
			alert(errorMsg);
			return;
		}else{
			document.getElementById("action").value = action;
			document.getElementById("catForm").submit();
		}
     }
function AddToCart(action){
	var errorMsg="";
		if ($("title").value == "")
				{ errorMsg +="\n - Banner Title"; $("title_err").innerHTML="*"} 
			else
				{ errorMsg +=""; $("title_err").innerHTML=""}	
		if ($("period").value == "0")
				{ errorMsg +="\n - Banner Period"; $("period_err").innerHTML="*"} 
			else
				{ errorMsg +=""; $("period_err").innerHTML=""}
		if ($("bannersizetype").value == "0")
				{ errorMsg +="\n - Banner Type"; $("type_err").innerHTML="*"} 
			else
				{ errorMsg +=""; $("type_err").innerHTML=""}
		if ($("file").value == "")
				{ errorMsg +="\n - Banner File"; $("file_err").innerHTML="*"} 
			else
				{ errorMsg +=""; $("file_err").innerHTML=""}
		if ($("url").value == "")
				{
					errorMsg +="\n - Target Url"; $("url_err").innerHTML="*";
					
				} 
			else
				{ errorMsg +=""; $("url_err").innerHTML=""}
		if ($("url").value.substr(0,7)=="http://")
				{
					errorMsg +=""; $("url_err").innerHTML="";	
					
				} 
			else
				{ errorMsg +="\n - Incorrect Target Url"; $("url_err").innerHTML="*"; }	
		if (errorMsg!=""){
			errorMsg ="Error\n_____________________________\n" +
			errorMsg + "\n_____________________________\n" +
			"Please Check Above Fields!";		
			alert(errorMsg);
			return;
		}else{
			document.getElementById("action").value = action;
			document.getElementById("catForm").submit();
		}
     }
function deleteItem(id){
			document.getElementById("item").value = id;
			document.getElementById("cartacc").value = "delete";
			document.getElementById("cartForm").submit();
     }	
function changePASS(action){
	var errorMsg="";
		if ($("curpass").value=="") errorMsg += "\n -Old Password.";
		if ($("pass1").value=="") errorMsg += "\n -New Password.";
		if ($("pass2").value=="") errorMsg += "\n -Re-Type New Password";
		if ($("pass1").value!=$("pass2").value)
		{errorMsg += "\n -Passwords does not much.";}

		if (errorMsg!=""){
			errorMsg ="Error\n_____________________________\n" +
			errorMsg + "\n_____________________________\n" +
			"Please Check Above Fields!";		
			alert(errorMsg);
			return;
		}else{
			$("action").value = action;
			$("passfrm").submit();
		}
     }
  function reqForm(action){
	var errorMsg="";
	var foundCount = 0
	
		for(i=0;i<document.getElementsByTagName("input").length;i++){
			if(document.getElementsByTagName("input")[i].type == "checkbox"){
			//alert(document.getElementsByTagName("input")[i].checked)
				if(document.getElementsByTagName("input")[i].checked == true){
					foundCount++;
				}
			}
		}
		if (foundCount==0) errorMsg +="\n -Select category";
		if ($("firstname").value=="") errorMsg +="\n -First Name";	
		if ($("lastname").value=="") errorMsg +="\n -Last Name";
		if (!isValidEmail($("email").value) || $("email").value == "") errorMsg +="\n -E-Mail";
		if ($("city").value=="") errorMsg +="\n -City";	
		if ($("state").value=="") errorMsg +="\n -State";			
		if ($("zip").value=="") errorMsg +="\n -Zip Code";
if ($("newpass1").value.length>=6){
		if ($("newpass1").value=="") errorMsg += "\n -New Password.";
		if ($("newpass2").value=="") errorMsg += "\n -Re-Type New Password";
		if ($("newpass1").value!=$("newpass2").value)
		{errorMsg += "\n -Passwords does not much.";}
}else errorMsg += "\n - Password needs to be minimum 6 characters.";
		//if ($("ed_qual_statement").value=="") errorMsg +="\n -Education / Qualifications / Mission Statement";
		//if ($("About_Description").value=="") errorMsg +="\n -About / Description";
		
		if (errorMsg!=""){
			errorMsg ="Error\n_____________________________\n" +
			errorMsg + "\n_____________________________\n" +
			"Please Check Above Fields!";		
			alert(errorMsg);
			return;
		}else{
			$("action").value = action;
			$("pracs_orgs_registration").submit();
		}
     }
  function reqFrmUser(action){
	var errorMsg="";

		if ($("uname").value=="") errorMsg +="\n -User Name";	
		if (!isValidEmail($("email").value) || $("email").value == "") errorMsg +="\n -E-Mail";
		
		if ($("pass").value.length>=6){
			if ($("pass").value=="") errorMsg += "\n -New Password.";
			if ($("pass2").value=="") errorMsg += "\n -Re-Type New Password";
			if ($("pass").value!=$("pass2").value)
			{errorMsg += "\n -Passwords does not much.";}
		}else errorMsg += "\n - Password needs to be minimum 6 characters.";
		
		

		
		if (errorMsg!=""){
			errorMsg ="Error\n_____________________________\n" +
			errorMsg + "\n_____________________________\n" +
			"Please Check Above Fields!";		
			alert(errorMsg);
			return;
		}else{
			$("action").value = action;
			$("ath_forum_registration").submit();
		}
     }
function reqCustomer(action){
	var errorMsg="";
	if ($("company").value=="") errorMsg +="\n -Company Name";
	if ($("firstname").value=="") errorMsg +="\n -First Name";
	if ($("firstname").value=="") errorMsg +="\n -Last Name";
	if (!isValidEmail($("email").value) || $("email").value == "") errorMsg +="\n -E-Mail";
		if ($("phone").value=="") errorMsg +="\n -Phone";
	if ($("pass").value.length>=6){
		if ($("pass").value=="") errorMsg += "\n -New Password.";
		if ($("pass2").value=="") errorMsg += "\n -Re-Type New Password";
		if ($("pass").value!=$("pass2").value)
		{errorMsg += "\n -Passwords does not much.";}
	}else errorMsg += "\n -Password needs to be minimum 6 characters.";
	if (errorMsg!=""){
		errorMsg ="Error\n_____________________________\n" +
		errorMsg + "\n_____________________________\n" +
		"Please Check Above Fields!";		
		alert(errorMsg);
		return;
	}else{
		$("action").value = action;
		$("regFrm").submit();
	}
 }
   function SendContactForm(action){
	var errorMsg="";
		if ($("firstname").value=="") errorMsg +="\n -Firstname";
		if ($("lastname").value=="") errorMsg +="\n -Lastname";
		if (!isValidEmail($("email").value) || $("email").value == "") errorMsg +="\n -E-Mail";
		if ($("message").value=="") errorMsg +="\n -Your Message";		
		if (errorMsg!=""){
			errorMsg ="Error\n_____________________________\n" +
			errorMsg + "\n_____________________________\n" +
			"Please Check Above Fields!";		
			alert(errorMsg);
			return;
		}else{
			document.getElementById("action").value = action;
			document.getElementById("cfrm").submit();
		}
     }
  function logUs(){
	var errorMsg="";
		if ($("username").value=="") errorMsg +="\n -User Name";
		if ($("userpass").value=="") errorMsg +="\n -Password";		
		if (errorMsg!=""){
			errorMsg ="Error\n_____________________________\n" +
			errorMsg + "\n_____________________________\n" +
			"Please Check Above Fields!";		
			alert(errorMsg);
			return;
		}else{
			$("ath_login").submit();
		}
     }
  function LogCustomer(action){
	var errorMsg="";
		if ($("ecmail").value=="") errorMsg +="\n -E-Mail";
		if ($("cpass").value=="") errorMsg +="\n -Password";		
		if (errorMsg!=""){
			errorMsg ="Error\n_____________________________\n" +
			errorMsg + "\n_____________________________\n" +
			"Please Check Above Fields!";		
			alert(errorMsg);
			return;
		}else{
			$("logaction").value = action;
			$("logFrm").submit();
		}
     }	 
  function addCom(action){
	var errorMsg="";
		if ($("title").value=="") errorMsg +="\n -Comment title";
		//if ($("message").value=="") errorMsg +="\n -Your Comment";		
		if (errorMsg!=""){
			errorMsg ="Error\n_____________________________\n" +
			errorMsg + "\n_____________________________\n" +
			"Please Check Above Fields!";		
			alert(errorMsg);
			return;
		}else{
			document.getElementById("action").value = action;
			document.getElementById("sndmsgFrm").submit();
		}
     }
  function addTread(action){
	var errorMsg="";
		//if ($("message").value=="") errorMsg +="\n -Your Comment";		
		if (errorMsg!=""){
			errorMsg ="Error\n_____________________________\n" +
			errorMsg + "\n_____________________________\n" +
			"Please Check Above Fields!";		
			alert(errorMsg);
			return;
		}else{
			document.getElementById("action").value = action;
			document.getElementById("sndmsgFrm").submit();
		}
     }	 
  function SendNews(action){
	var errorMsg="";	
		if (!isValidEmail(document.getElementById("email").value) || document.getElementById("email").value == "") errorMsg +="\n -Invalid E-Mail";
		
		if (errorMsg!=""){
			errorMsg ="Error\n_____________________________\n" +
			errorMsg + "\n_____________________________\n" +
			"Please Check Above Fields!";		
			alert(errorMsg);
			return;
		}else{
			document.getElementById("act").value = action;
			document.getElementById("newsFrm").submit();
		}
     }	
function checkUpdate(action){
	var errorMsg="";

		/*if ($("catlist").value=="0") errorMsg +="\n -Select Category";
		if ($("firstname").value=="") errorMsg +="\n -First Name";	
		if ($("lastname").value=="") errorMsg +="\n -Last Name";
		if (!isValidEmail($("email").value) || $("email").value == "") errorMsg +="\n -E-Mail";
		if ($("city").value=="") errorMsg +="\n -City";	
		if ($("state").value=="") errorMsg +="\n -State";			
		if ($("zip").value=="") errorMsg +="\n -Zip Code";
		if ($("newpass1").value=="") errorMsg += "\n -New Password.";
		if ($("newpass2").value=="") errorMsg += "\n -Re-Type New Password";
		if ($("newpass1").value!=$("newpass2").value)
		{errorMsg += "\n -Passwords does not much.";}
		//if ($("ed_qual_statement").value=="") errorMsg +="\n -Education / Qualifications / Mission Statement";
		//if ($("About_Description").value=="") errorMsg +="\n -About / Description";
		*/
		if (errorMsg!=""){
			errorMsg ="Error\n_____________________________\n" +
			errorMsg + "\n_____________________________\n" +
			"Please Check Above Fields!";		
			alert(errorMsg);
			return;
		}else{
			
			$("act").value = action;
			$("pracs_orgs_up").submit();
		}
     }
function startSearch(action){
	var errorMsg="";

		if ($("miles").value<=100 && !$("zipcode").value) errorMsg +="\n -Please enter zip code.";	
		if ($("zipcode").value && $("miles").value==500) errorMsg +="\n -Please select different mile.";
		/*if ($("catlist").value=="0") errorMsg +="\n -Select Category";
		if ($("firstname").value=="") errorMsg +="\n -First Name";	
		if ($("lastname").value=="") errorMsg +="\n -Last Name";
		if (!isValidEmail($("email").value) || $("email").value == "") errorMsg +="\n -E-Mail";
		if ($("city").value=="") errorMsg +="\n -City";	
		if ($("state").value=="") errorMsg +="\n -State";			
		if ($("zip").value=="") errorMsg +="\n -Zip Code";
		if ($("newpass1").value=="") errorMsg += "\n -New Password.";
		if ($("newpass2").value=="") errorMsg += "\n -Re-Type New Password";
		if ($("newpass1").value!=$("newpass2").value)
		{errorMsg += "\n -Passwords does not much.";}
		//if ($("ed_qual_statement").value=="") errorMsg +="\n -Education / Qualifications / Mission Statement";
		//if ($("About_Description").value=="") errorMsg +="\n -About / Description";
		*/
		if (errorMsg!=""){
			errorMsg ="Error\n_____________________________\n" +
			errorMsg + "\n_____________________________\n" +
			"Please Check Above Fields!";		
			alert(errorMsg);
			return;
		}else{
			$("action").value = action;
			$("searcForm").submit();
		}
     }	 
//__________________________________________________________________________________________________________f
	function Colapse(rqTR){
		if(document.getElementById(rqTR).style.display == 'none')
		{
			document.getElementById(rqTR).style.display = '';
		}else{
			document.getElementById(rqTR).style.display = 'none';
		}		
	}
//__________________________________________________________________________________________________________e
	var lastTR=0;
	function Alp_Collapse(trid){
		
		if(document.getElementById(trid).style.display == 'none')
		{
			if(lastTR != 0) { document.all(lastTR).style.display = 'none'; }			
			document.getElementById(trid).style.display = '';
		}else{
			document.getElementById(trid).style.display = 'none';
		}	
		lastTR=trid;
	}
//__________________________________________________________________________________________________________r
	function bannerSize(sindex){
		splt = sindex.split("x");
		$("banw").value=splt[0];
		$("banh").value=splt[1];
	}
	function checkIT(frm)
	{
		message="Errors:\n";
		ok=true;
		if (document.frm.username.value==""){ok=false;message+="Usernamei\n";}
		else if (document.frm.password.value==""){ok=false;message+="Password\n";}
		else if (document.frm.newpass1.value==""){ok=false;message+="New Password\n";}
		else if (document.frm.newpass2.value==""){ok=false;message+="Password re-type\n";}		
		else if (document.frm.newpass1.value!=document.frm.newpass2.value){ok=false;message+="\n";}
		if (!ok){alert(message);return false;}
		else return true
	}
//__________________________________________________________________________________________________________Y
function clickclear(thisfield, defaulttext) {
	if (thisfield.value == defaulttext) {
	thisfield.value = "";
	}
}
function upFeatured(action) {
			var errorMsg="";
		//if ($("title").value="") errorMsg +="\n - Title";
		if (errorMsg!=""){
			errorMsg ="Error\n_____________________________\n" +
			errorMsg + "\n_____________________________\n" +
			"Please Check Above Fields!";		
			alert(errorMsg);
			return;
		}else{
			$("action").value = action;
			$("feaForm").submit();
		}
}
//-------------------------------------------
<!--
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  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_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//--
//__________________________________________________________________________________________________________A
// Menu Goster
function MenuGoster(katman){
   katman = document.getElementById(katman);
   katman.style.visibility = 'visible';
   }

// Menu Gizle
function MenuGizle(katman){
   katman = document.getElementById(katman);
   katman.style.visibility = 'hidden';
   }

//__________________________________________________________________________________________________________A
function showAdCats(id){
			$('cat1').style.display = 'none';
			$('cat2').style.display = 'none';
			$('cat3').style.display = 'none';			

	$('cat'+ id +'').style.display = '';
}
//__________________________________________________________________________________________________________A

function check_cnt(nm){
	frmCheckform	= document.pracs_orgs_registration;
	var foundCount = 0
	
	for(i=0;i<document.getElementsByTagName("input").length;i++){
		if(document.getElementsByTagName("input")[i].type == "checkbox"){
		//alert(document.getElementsByTagName("input")[i].checked)
			if(document.getElementsByTagName("input")[i].checked == true){
				foundCount++;
			}
		}
	}
	if(foundCount>=4){
		alert("You cannot select more than 3 categories");
		document.getElementById(nm).checked=false;
	}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
var ccErrorNo = 0;
var ccErrors = new Array ()

ccErrors [0] = "Unknown card type";
ccErrors [1] = "No card number provided";
ccErrors [2] = "Credit card number is in invalid format";
ccErrors [3] = "Credit card number is invalid";
ccErrors [4] = "Credit card number has an inappropriate number of digits";

function checkCreditCard (cardnumber, cardname) {
     
  // Array to hold the permitted card characteristics
  var cards = new Array();

  // Define the cards we support. You may add addtional card types.
  
  //  Name:      As in the selection box of the form - must be same as user's
  //  Length:    List of possible valid lengths of the card number for the card
  //  prefixes:  List of possible prefixes for the card
  //  checkdigit Boolean to say whether there is a check digit
  
  cards [0] = {name: "Visa", 
               length: "13,16", 
               prefixes: "4",
               checkdigit: true};
  cards [1] = {name: "MasterCard", 
               length: "16", 
               prefixes: "51,52,53,54,55",
               checkdigit: true};
  cards [2] = {name: "DinersClub", 
               length: "14,16", 
               prefixes: "305, 36, 38, 54,55",
               checkdigit: true};
  cards [3] = {name: "CarteBlanche", 
               length: "14", 
               prefixes: "300,301,302,303,304,305",
               checkdigit: true};
  cards [4] = {name: "AmEx", 
               length: "15", 
               prefixes: "34,37",
               checkdigit: true};
  cards [5] = {name: "Discover", 
               length: "16", 
               prefixes: "6011,622,64,65",
               checkdigit: true};
  cards [6] = {name: "JCB", 
               length: "16", 
               prefixes: "35",
               checkdigit: true};
  cards [7] = {name: "enRoute", 
               length: "15", 
               prefixes: "2014,2149",
               checkdigit: true};
  cards [8] = {name: "Solo", 
               length: "16,18,19", 
               prefixes: "6334, 6767",
               checkdigit: true};
  cards [9] = {name: "Switch", 
               length: "16,18,19", 
               prefixes: "4903,4905,4911,4936,564182,633110,6333,6759",
               checkdigit: true};
  cards [10] = {name: "Maestro", 
               length: "12,13,14,15,16,18,19", 
               prefixes: "5018,5020,5038,6304,6759,6761",
               checkdigit: true};
  cards [11] = {name: "VisaElectron", 
               length: "16", 
               prefixes: "417500,4917,4913,4508,4844",
               checkdigit: true};
  cards [12] = {name: "LaserCard", 
               length: "16,17,18,19", 
               prefixes: "6304,6706,6771,6709",
               checkdigit: true};
               
  // Establish card type
  var cardType = -1;
  for (var i=0; i<cards.length; i++) {

    // See if it is this card (ignoring the case of the string)
    if (cardname.toLowerCase () == cards[i].name.toLowerCase()) {
      cardType = i;
      break;
    }
  }
  
  // If card type not found, report an error
  if (cardType == -1) {
     ccErrorNo = 0;
     return false; 
  }
   
  // Ensure that the user has provided a credit card number
  if (cardnumber.length == 0)  {
     ccErrorNo = 1;
     return false; 
  }
    
  // Now remove any spaces from the credit card number
  cardnumber = cardnumber.replace (/\s/g, "");
  
  // Check that the number is numeric
  var cardNo = cardnumber
  var cardexp = /^[0-9]{13,19}$/;
  if (!cardexp.exec(cardNo))  {
     ccErrorNo = 2;
     return false; 
  }
       
  // Now check the modulus 10 check digit - if required
  if (cards[cardType].checkdigit) {
    var checksum = 0;                                  // running checksum total
    var mychar = "";                                   // next char to process
    var j = 1;                                         // takes value of 1 or 2
  
    // Process each digit one by one starting at the right
    var calc;
    for (i = cardNo.length - 1; i >= 0; i--) {

    
      // Extract the next digit and multiply by 1 or 2 on alternative digits.
      calc = Number(cardNo.charAt(i)) * j;
    
      // If the result is in two digits add 1 to the checksum total
      if (calc > 9) {
        checksum = checksum + 1;
        calc = calc - 10;
      }
    
      // Add the units element to the checksum total
      checksum = checksum + calc;
    
      // Switch the value of j
      if (j ==1) {j = 2} else {j = 1};
    } 
  
    // All done - if checksum is divisible by 10, it is a valid modulus 10.
    // If not, report an error.
    if (checksum % 10 != 0)  {
     ccErrorNo = 3;
     return false; 
    }
  }  

  // The following are the card-specific checks we undertake.
  var LengthValid = false;
  var PrefixValid = false; 
  var undefined; 

  // We use these for holding the valid lengths and prefixes of a card type
  var prefix = new Array ();
  var lengths = new Array ();
    
  // Load an array with the valid prefixes for this card
  prefix = cards[cardType].prefixes.split(",");
      
  // Now see if any of them match what we have in the card number
  for (i=0; i<prefix.length; i++) {
    var exp = new RegExp ("^" + prefix[i]);
    if (exp.test (cardNo)) PrefixValid = true;
  }
      
  // If it isn't a valid prefix there's no point at looking at the length
  if (!PrefixValid) {
     ccErrorNo = 3;
     return false; 
  }
    
  // See if the length is valid for this card
  lengths = cards[cardType].length.split(",");
  for (j=0; j<lengths.length; j++) {
    if (cardNo.length == lengths[j]) LengthValid = true;
  }
  
  // See if all is OK by seeing if the length was valid. We only check the 
  // length if all else was hunky dory.
  if (!LengthValid) {
     ccErrorNo = 4;
     return false; 
  };   
  
  // The credit card is in the required format.
  return true;
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function opWin (url,w,h){
window.open (url,"mywindow","location=1,status=1,scrollbars=1,width="+w+",height="+h+"");
}


