var d=document;

window.onload = function(){
	loadPng();
}

function loadPng(){
	if(is.ie&&!is.mac){
		alphaBackgrounds();
		fnLoadPngs();
	}

}


function gB(){
	var n=navigator;
	var ua=' ' + n.userAgent.toLowerCase();
	var pl=n.platform.toLowerCase();
	var an=n.appName.toLowerCase();
	this.version = n.appVersion;
	this.dom=d.getElementById?1:0;
	this.ns=ua.indexOf('mozilla')>0;
	if(ua.indexOf('compatible')>0){this.ns = false;};
	this.ie=ua.indexOf('msie')>0;
	this.ie5=ua.indexOf("msie 5") != -1;
	this.mac=ua.indexOf('mac')>0;
	this.major=parseInt(this.version);
	this.minor=parseFloat(this.version);
	return this;
}
var is = new gB();

function fnLoadPngs() {
	if(is.ie){
		var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
		var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);
	
		for (var i = document.images.length - 1, img = null; (img = document.images[i]); i--) {
			if (itsAllGood && img.src.match(/\.png$/i) != null) {
				var src = img.src;
				img.style.width = img.width +"px";
				img.style.height = img.height +"px";
				img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')"
				img.src = "i/transpx.gif";
			}
			img.style.visibility = "visible";
		}
	}
}

function alphaBackgrounds(){
	if(is.ie){
		var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
		var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5);
		for (i=0; i<document.all.length; i++){
			var bg = document.all[i].currentStyle.backgroundImage;
			if (itsAllGood && bg){
				if (bg.match(/\.png/i) != null){
					var mypng = bg.substring(5,bg.length-2);
					document.all[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mypng+"', sizingMethod='crop')";
					document.all[i].style.backgroundImage = "url('i/transpx.gif')";
				}
			}
		}
	}
}


function openBrWindow(theURL,winName,features) {
  window.open(theURL,winName,features);
}

/*
==========================================
Form Validation script
==========================================
*/

 var errorMessage = "";
  
  function bad(field, label) {
    if (errorMessage == "") {
      field.focus();
      errorMessage = "Please enter the following:\n";
    }
    if (field.style) {
      field.style.backgroundColor = '#fcc';
    }
    errorMessage += "  " + label + "\n";
    return false;
  }
  
  function good(field) {
    if (field.style) {
      field.style.backgroundColor = '';
    }
    return true;
  }
  
  function validField(field, label) {
    return (field.value == "" ? bad(field, label) : good(field));
  }
  
  function validCCID(field, label) {
//    return (field.length >4 ? bad(field, label) : good(field));  // Unable to test this because I can't access form on web demo server.
//    return (field.length <3 ? bad(field, label) : good(field));  // Unable to test this because I can't access form on web demo server.
    var str=field.value;
	if (str.length==0)
	{
	  return bad(field, label);
	}
	else
	{
      return (str.length<3 ? bad(field, "Valid " + label) : good(field));  // Unable to test this because I can't access form on web demo server.
	}
  }
  
  function validEmail(field) {
    if (!validField(field, "Email Address")) {
      return false;
    }
//    if (field.value.indexOf("@") == -1) {
//      return bad(field, "Valid Email Address");
//    }
//    return good(field);
	
//		var str=document.validation.emailcheck.value
	var str=trimAll(field.value);
	field.value=str;

	//	if (InStr(str, " ") >= 0)
    if (str.search(/\s/)>=0)
	{
	//whitespace in between other characters
 	  return bad(field, "Valid Email Address");
	}
	
    var filter=/^.+@.+\..{2,6}$/

    if (!(filter.test(str)))
	{
	//not in basic email address format
//	alert(field.value);
//      return good(field);
      return bad(field, "Valid Email Address");
      // return bad(field, "Why?");
	}
	
//	filter=/\W\W$/

    //if address doesn't end in consecutive alphabetic characters, extension invalid
  //  if ((filter.test(str)))
//	{
 //	  return bad(field, "Valid Email Address");
//	}
	
	var domain = GetDomainName(str);
	
    if (domain.search(/\.\./)==-1)
	{
	  //return good(field);
	  //    return bad(field, GetDomainExtension(domain));
	}
    else {
	  //has consecutive periods in domain
      return bad(field, "Valid Email Address");
	  //return bad(field, domain.search(/\.\./));
    }
	
	var extension = GetDomainExtension(domain);
	
	if (ValidDomainExtension(extension)==null)
	{
 	  return bad(field, "Valid Email Address");
    }
	else
	{
	  return good(field);
	}
  }
  
  function validSelect(field, label) {
    if (field.selectedIndex == 0) {
      return bad(field, label);
    }
    return good(field);
  }
  
	function validate(){
	  errorMessage = "";
	    var x = document.Form1;
	    if ( x == null )
	    {
			x=document.getElementById('Form1');
		}
		
		validField(x.orders_FirstName, "First Name");
		validField(x.orders_LastName, "Last Name");
		validField(x.orders_BillingAddress, "Billing Address");
		validField(x.orders_BillingCity, "City for your Billing Address");
		validSelect(x.orders_country, "Country for your Billing Address");
		validField(x.orders_BillingState, "State for your Billing Address");
		validField(x.orders_BillingZip, "Zip Code for your Billing Address");
		validEmail(x.orders_EmailAddress);
		validSelect(x.orders_cardtype, "Credit Card Type");
		validField(x.orders_CreditCardNumber, "Credit Card Number");
		//validField(x.orders_Checksum, "CCID");
    validCCID(x.orders_Checksum, "CCID");
		validSelect(x.orders_ExpiresMonth, "Credit card expiration month");
		validSelect(x.orders_ExpiresYear, "Credit card expiration year");
		
		if (errorMessage != "") {
		  alert(errorMessage);
		  return false;
		}
		
		document.forms.Form1.submit();
		return true;
	}
	

    function trimAll(sString) 
    {
	  //if string contains only whitespace or is empty
	  if ((sString.search(/\S/)<0) || (sString.length==0))
	  {
	    sString = "";
		return sString;
      }

      while (sString.substring(0,1) == ' ')
      {
       sString = sString.substring(1, sString.length);
      }
      while (sString.substring(sString.length-1, sString.length) == ' ')
      {
        sString = sString.substring(0,sString.length-1);
      }
	  return (sString);
    }
	
	
		// InStr function written by: Steve Bamelis - steve.bamelis@pandora.be
    function InStr(strSearch, charSearchFor)
    {

      var x = strSearch.length;
	  for (i=0; i < x; i++)
	  {
	     if (charSearchFor == strSearch.charAt(i))
	     {
		 	return i;
	     }
	  }
	  return -1;
    }

    function GetDomainName(sString)
    {
	  var i = sString.length;
	  var pos = -1;
	  while ((i>=0) && (pos<0))
	  {
	     if (sString.charAt(i)=='@')
	     {
		 	pos = i;
	     }
		 i--;
	  }
	  if (pos<1)
	  {
	    //no domain name present
	    return null;
	  }
	  
	  return(sString.substr(pos+1, sString.length-pos-1));
    }
	
	
    function GetDomainExtension(sString)
    {
      var i = sString.length;
	  var pos = -1;
	  while ((i>=0) && (pos<0))
	  {
	     if (sString.charAt(i)=='.')
	     {
		 	pos = i;
	     }
		 i--;
	  }
	  if (pos<1)
	  {
	    //no extension present
	    return null;
	  }
	  
	  return(sString.substr(pos+1, sString.length-pos-1));
	}
	
	
	function ValidDomainExtension(sString)
    {
	  var i = sString.length;
	  	   
	  if (i<2)
	  {
        return null;
	  }
	  
	  var pos = 0;
	  while (pos<i)
	  {
	     if ( ((sString.charAt(pos)>='a') && (sString.charAt(pos)<='z')) || ((sString.charAt(pos)>='A') && (sString.charAt(pos)<='Z')) )
	     {
		 
	     }
		 else
		 {
		   //extension contains something other than a letter
		   return null;
		 }  
		 pos++;
	  }
	  
	  return 1;
	}