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_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_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];}
}

function writeAuthLinks(){
	var s = '<a href="/user/login.php">Product Download Login</a>';
	if( document.cookie.indexOf("tcuser")!=-1 ){
		s = '<a href="/user/action/logout.php" class="active">Product Download Logout</a><span style="margin:0px 7px;">|</span><a href="/user/account.php" class="active">My Account</a>';
	}
	document.write( s );
}

function validateUsername( frmStr, userObj ){
	var alphaNum = /[\W]/gi;
	if( alphaNum.test(userObj.value) ){
		alert( 'Your username may only contain alphanumeric characters (A-Z, 0-9).' );
		var str2eval = frmStr+'["'+userObj.name+'"].select()';
		eval( str2eval );
		return false;
	}
	else{
		return true;
	}
}

function validatePassword( frmStr, passObj ){
	var pass = passObj.value;
	var str2eval = frmStr+'["'+passObj.name+'"].select()';
	var letters = /[a-z]+/gi;
	var numbers = /[0-9]+/g;
	if( pass.length < 8 ){
		alert( 'Your password must be at least 8 characters in length.' );
		eval( str2eval );
		return false;
	}
	else if( !letters.test(pass) || !numbers.test(pass) ){
		alert( 'Passwords must contain both alpha and numeric characters.' );
		eval( str2eval );
		return false;
	}
	return true;
}

function validateStateCountry( stateDrop, countryDrop ){
	var state = stateDrop[stateDrop.selectedIndex].value;
	var country = countryDrop[countryDrop.selectedIndex].value;
	var validPair = true;
		if( state == 'ZZ' && (country == 'US' || country == 'CA') ) validPair = false; //state ZZ not acceptable for US/CA
		if( isProvince(state) && country != 'CA' ) validPair = false; //if province, country must be CA
		if( !isProvince(state) && country != 'US' ) validPair = false; //if not province, country must be US
		if( state == 'ZZ' && ( country != 'US' && country != 'CA' ) ) validPair = true; //allow ZZ for non US/CA
	if( !validPair ){
		alert( 'State does not appear to match the selected Country.' );
		countryDrop.focus();
		return false;
	}
	else{
		return true;
	}
}

function isProvince( val ){
	var isProvince = false;
	var provinces = new Array( 'AB', 'BC', 'MB', 'NB', 'NF', 'NT', 'NS', 'OT', 'PE', 'QC', 'SK', 'YT' );
	for( var i=0; i<provinces.length; i++ ){
		 if( provinces[i] == val ) isProvince = true;
	}
	return isProvince;
}

function validateCPCs( cpc){
    var alphanumeric = /[^A-Za-z0-9\.]+/gi;
    if( alphanumeric.test(cpc) ){
        alert( 'CPC values may only contain alphanumeric characters and periods.' );
        return false;
    }
    return true;
}

