<!--
//###################################################################################
//THIS PAGE CONTAINS ALL THE COMMON SCRIPTS USED ON THE INTERNET SITE
//WRITTEN BY: PHILIP A. SEIDEL
//PHIL_SEIDEL@ATT.NET
//LAST UPDATED: MONDAY, SEPTEMBER 30, 2001
//BY: ALEXANDER DUTTON
//ZEN@ZENMASTER.COM
//###################################################################################

//################################ FORM VALIDATION ##################################

function ValidateForm(strform, arname, artype){
	//requires form name, elements names, elements types
	//arname is array seperated by comma
	//artype is array seperated by comma
	//call function in the following manner
	//onSubmit="return ValidateForm('form name', 'field1,field2', 'Type,Type');"
	//possible Types (T-Text, E-Email, N-number, D-date)
	var strvalue;
	var x = 0;
	var intlimit;
	var strerr = 'X';
	arname = arname.split(',');	//field names seperated by comma
	artype = artype.split(',');	//field type seperated by comma
	intlimit = arname.length;	//number of fields being checked
	if (artype[0]=='T'){
		if (arname.substring(0, 4) == '%03C'){	//must contain http://
			strerr = arname + ' is not a valid search pattern.';
		}else{
			strerr = 'X';
		}
	}
	for (x=0;x<intlimit;x++){	//for each field
		strvalue = document.forms[strform].elements[arname[x]].value;	//field value
		strerr = '';	//set to blank
		strerr = ValidateBlank(arname[x], strvalue);	//check for blank
		if (strerr.charAt(1) == 'X'){	//if not blank
			strerr = '';	//set to blank
		}
		if (strerr.charAt(1) == ''){	//passed blank check now check special
		switch (artype[x]){
			case 'E':	//check for valid email
				strerr = ValidateEmail(arname[x], strvalue);
				break;
			case 'N':	//check for valid number
				strerr = ValidateNumber(arname[x], strvalue);
				break;
			case 'D':	//check for valid date
				strerr = ValidateDate(arname[x], strvalue);
				break;
			case 'U':	//check for valid url
				strerr = ValidateUrl(arname[x], strvalue);
				break;
		}}
		if (strerr.length > 1){
			alert(strerr.toUpperCase());
			return false;
		}
	}
}

function ValidateBlank(strname, strvalue){	//checks for blank
	var strerr = '';
	if (strvalue.length <= 0) {	//if field is blank then alert user and exit function
		strerr = strname + ' is required.';	
	}else{
		strerr = 'X';
	}
	return strerr;	//return strerr value
}

function ValidateEmail(strname, strvalue){	//validates email
	var strerr = '';
	if (strvalue.length < 7) {	//valid email must be atleast 7 chars.
		strerr = strname + ' is not a valid email address.';
	}else{
		if (strvalue.indexOf('@') == -1){	//must contain @
			strerr = strname + ' is not a valid email address.';
		}else{
			strerr = 'X';
		}
	}
	return strerr;
}

function ValidateUrl(strname, strvalue){	//validates url
	var strerr = '';
	var strtemp = '';
	if (strvalue.length < 7) {	//valid url must be atleast 7 chars. http://
		strerr = strname + ' is not a valid url.';
	}else{
		strtemp = strvalue.toLowerCase();
		if (strtemp.substring(0, 7) != 'http://'){	//must contain http://
			strerr = strname + ' is not a valid url.';
		}else{
			strerr = 'X';
		}
	}
	return strerr;
}

function ValidateNumber(strname, strvalue){	//validates number
	var strerr = '';
	if (isNaN(strvalue) == true)  {
		strerr = strname + ' must be a number.';
	}else{
		strerr = 'X';
	}
	return strerr;
}

function ValidateDate(strname, strvalue){	//validates date
	var strerr = '';
	var dtdate = new Date();	//current date
	var dttemp;					//selected date
	var ardate;					//date array
	dtdate.setHours(0);
	dtdate.setMinutes(0);
	dtdate.setSeconds(0);
	dtdate.setMilliseconds(0);
	if (strvalue.indexOf('/') != -1){	//does entered date have slashes
		ardate = strvalue.split('/');	//split into 3 parts
		if (ardate.length == 3){	//proper format check for expiration
			ardate[0] = ardate[0] - 1;	//correction for month starting at 0
			dttemp = new Date(ardate[2], ardate[0], ardate[1]);	//create date selected date
			if (!(dttemp >= dtdate)){	//date has already past
				strerr = 'The date you entered has already past.'
			}
		}else{	//invalid number of date elements
			strerr = strname + ' must be a date. (mm/dd/yyyy)';
		}
	}else{	//invalid date b/c no slashes
		strerr = strname + ' must be a date. (mm/dd/yyyy)';
	}
	return strerr;
}
//############################### END FORM VALIDATION ##########################

function ConfirmAction(straction) { //display confirmation message
var strconfirm = false;
strconfirm = confirm(straction);
	if (strconfirm == true) {
	return true
	}else {
	return false
	}
}

function OpenWindow(straddress, inth, intw){
	if(inth == 0 || intw == 0){
		window.open(straddress);
	}else{
		window.open(straddress, '', 'height=' + inth + ',width=' + intw + ',scrollbars=yes,resizable=yes');
	}
	
}

function UrlJump(strurl){
	window.document.location = strurl;
}


//################################## CREDIT CARD VALIDATION ##########################

function mod10( cnumber ) { // LUHN Formula for validation of credit card numbers.
	var ar = new Array( cnumber.length );
	var i = 0,sum = 0;
	for( i = 0; i < cnumber.length; ++i ) {
		ar[i] = parseInt(cnumber.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 expired( month, year ) {
	var now = new Date();							// this function is designed to be Y2K compliant.
	var expiresIn = new Date(year,month,0,0,0);		// create an expired on date object with valid thru expiration date
	expiresIn.setMonth(expiresIn.getMonth()+1);		// adjust the month, to first day, hour, minute && second of expired month
	if( now.getTime() < expiresIn.getTime() ) return false;
	return true;									// then we get the miliseconds, and do a long integer comparison
}

function validateCard(cnumber,ctype,cmonth,cyear) {
	if( cnumber.length == 0 ) {						//most of these checks are self explanitory
		alert("ENTER A VALID CARD NUMBER.");
		return false;				
	}
	for( var i = 0; i < cnumber.length; ++i ) {		// make sure the number is all digits.. (by design)
		var c = cnumber.charAt(i);
		if( c < '0' || c > '9' ) {
			alert("ENTER A VALID CARD NUMBER.  USE ONLY DIGITS.  DO NOT USE SPACES OR HYPHENS.");
			return false;
		}
	}
	var length = cnumber.length;			//perform card specific length and prefix tests
	switch( ctype ) {
		case '0':	//3
			if( length != 15 ) {
				alert("ENTER A VALID AMERICAN EXPRESS CARD NUMBER.");
				return false;
			}
			var prefix = parseInt( cnumber.substring(0,2));
			if( prefix != 34 && prefix != 37 ) 
			{
				alert("ENTER A VALID AMERICAN EXPRESS CARD NUMBER.");
				return false;
			}
			break;
		case '3':	//4
			if( length != 16 ) {
				alert("ENTER A VALID DISCOVER CARD NUMBER.");
				return false;
			}
			var prefix = parseInt( cnumber.substring(0,4));
			if( prefix != 6011 ) {
				alert("ENTER A VALID DISCOVER CARD NUMBER.");
				return false;
			}
			break;
		case '2':	//2
			if( length != 16 ) {
				alert("ENTER A VALID MASTERCARD NUMBER.");
				return false;
			}
			var prefix = parseInt( cnumber.substring(0,2));
			if( prefix < 51 || prefix > 55) {
				alert("ENTER A VALID MASTERCARD CARD NUMBER.");
				return false;
			}
			break;
		case '1':	//1
			if( length != 16 && length != 13 ) {
				alert("ENTER A VALID VISA CARD NUMBER.");
				return false;
			}
			var prefix = parseInt( cnumber.substring(0,1));
			if( prefix != 4 ) {
				alert("ENTER A VALID VISA CARD NUMBER.");
				return false;
			}
			break;
	}
	if( !mod10( cnumber ) ) {                             		// run the check digit algorithm
		alert("THIS IS NOT A VALID CREDIT CARD NUMBER.");
		return false;
	}
	if( expired( cmonth, cyear ) ) {							// check if entered date is already expired.
		alert("THE EXPIRATION DATE YOU HAVE ENTERED IS INVALID.");
		return false;
	}
	
	return true; // at this point card has not been proven to be invalid
}


function ImagePreload(){
	var x;
	var intlimit;
	intlimit = ImagePreload.arguments.length;
	for (x=0;x<intlimit;x++){
		var img = new Image();
		window.status = "Preloading Image: " + ImagePreload.arguments[x];
		img.src = ImagePreload.arguments[x];
	}
	window.status = "Done";
}

function ImageSwap(strname, strswap){
	document.images[strname].src = strswap;
}

function bcStyle(){	//browser check
//
//	UPDATE BY ALEXANDER DUTTON (ZEN@ZENMASTER.COM)
//	09.30.02 - new browser identification script
//

var isNS4, isNS6, isIE4, isIE5;

isNS4 = (document.layers) ? true : false;
isIE4 = (document.all && !document.getElementById) ? true : false;
isIE5 = (document.all && document.getElementById) ? true : false;
isNS6 = (!document.all && document.getElementById) ? true : false;

	if (isIE4)
		{document.write('<LINK REL="StyleSheet" HREF="static/default.css" type="text/css">');}
	else if (isIE5)
		{document.write('<LINK REL="StyleSheet" HREF="static/default.css" type="text/css">');}
	else if (isNS4)
		{document.write('<LINK REL="StyleSheet" HREF="static/default.css" type="text/css">');}
	else if (isNS6)
		{document.write('<LINK REL="StyleSheet" HREF="static/default.css" type="text/css">');}
	else
		{document.write('<LINK REL="StyleSheet" HREF="static/default.css" type="text/css">');}
}

var yourimages=new Array()
function preloadimages(){
for (i=0;i<preloadimages.arguments.length;i++){
yourimages[i]=new Image()
yourimages[i].src=preloadimages.arguments[i]
}
}

/******
START FLASH CONTENT
*****************/

if(typeof com == "undefined") var com = new Object();
if(typeof com.deconcept == "undefined") com.deconcept = new Object();
if(typeof com.deconcept.util == "undefined") com.deconcept.util = new Object();
if(typeof com.deconcept.FlashObjectUtil == "undefined") com.deconcept.FlashObjectUtil = new Object();
com.deconcept.FlashObject = function(swf, id, w, h, ver, c, useExpressInstall, quality, xiRedirectUrl, redirectUrl, detectKey){
  if (!document.createElement || !document.getElementById) return;
  this.DETECT_KEY = detectKey ? detectKey : 'detectflash';
  this.skipDetect = com.deconcept.util.getRequestParameter(this.DETECT_KEY);
  this.params = new Object();
  this.variables = new Object();
  this.attributes = new Array();
  this.useExpressInstall = useExpressInstall;

  if(swf) this.setAttribute('swf', swf);
  if(id) this.setAttribute('id', id);
  if(w) this.setAttribute('width', w);
  if(h) this.setAttribute('height', h);
  if(ver) this.setAttribute('version', new com.deconcept.PlayerVersion(ver.toString().split(".")));
  this.installedVer = com.deconcept.FlashObjectUtil.getPlayerVersion(this.getAttribute('version'), useExpressInstall);
  if(c) this.addParam('bgcolor', c);
  var q = quality ? quality : 'high';
  this.addParam('quality', q);
  var xir = (xiRedirectUrl) ? xiRedirectUrl : window.location;
  this.setAttribute('xiRedirectUrl', xir);
  this.setAttribute('redirectUrl', '');
  if(redirectUrl) this.setAttribute('redirectUrl', redirectUrl);
}
com.deconcept.FlashObject.prototype = {
  setAttribute: function(name, value){
    this.attributes[name] = value;
  },
  getAttribute: function(name){
    return this.attributes[name];
  },
  addParam: function(name, value){
    this.params[name] = value;
  },
  getParams: function(){
    return this.params;
  },
  addVariable: function(name, value){
    this.variables[name] = value;
  },
  getVariable: function(name){
    return this.variables[name];
  },
  getVariables: function(){
    return this.variables;
  },
  createParamTag: function(n, v){
    var p = document.createElement('param');
    p.setAttribute('name', n);
    p.setAttribute('value', v);
    return p;
  },
  getVariablePairs: function(){
    var variablePairs = new Array();
    var key;
    var variables = this.getVariables();
    for(key in variables){
      variablePairs.push(key +"="+ variables[key]);
    }
    return variablePairs;
  },
  getFlashHTML: function() {
    var flashNode = "";
    if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { // netscape plugin architecture
      if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType", "PlugIn");
      flashNode = '<embed type="application/x-shockwave-flash" src="'+ this.getAttribute('swf') +'" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'"';
      flashNode += ' id="'+ this.getAttribute('id') +'" name="'+ this.getAttribute('id') +'" ';
      var params = this.getParams();
       for(var key in params){ flashNode += [key] +'="'+ params[key] +'" '; }
      var pairs = this.getVariablePairs().join("&");
       if (pairs.length > 0){ flashNode += 'flashvars="'+ pairs +'"'; }
      flashNode += '/>';
    } else { // PC IE
      if (this.getAttribute("doExpressInstall")) this.addVariable("MMplayerType", "ActiveX");
      flashNode = '<object id="'+ this.getAttribute('id') +'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+ this.getAttribute('width') +'" height="'+ this.getAttribute('height') +'">';
      flashNode += '<param name="movie" value="'+ this.getAttribute('swf') +'" />"';
      var params = this.getParams();
       for(var key in params) {
        flashNode += '<param name="'+ key +'" value="'+ params[key] +'">';
       }
      var pairs = this.getVariablePairs().join("&");
       if(pairs.length > 0) flashNode += '<param name="flashvars" value="'+ pairs +'">';
    }
    return flashNode;
  },
  write: function(elementId){
    if(this.useExpressInstall) {
      // check to see if we need to do an express install
      var expressInstallReqVer = new com.deconcept.PlayerVersion([6,0,65]);
      if (this.installedVer.versionIsValid(expressInstallReqVer) && !this.installedVer.versionIsValid(this.getAttribute('version'))) {
        this.setAttribute('doExpressInstall', true);
        this.addVariable("MMredirectURL", escape(this.getAttribute('xiRedirectUrl')));
        document.title = document.title.slice(0, 47) + " - Flash Player Installation";
        this.addVariable("MMdoctitle", document.title);
      }
    } else {
      this.setAttribute('doExpressInstall', false);
    }
    if(this.skipDetect || this.getAttribute('doExpressInstall') || this.installedVer.versionIsValid(this.getAttribute('version'))){
      var n = (typeof elementId == 'string') ? document.getElementById(elementId) : elementId;
      n.innerHTML = this.getFlashHTML();
    }else{
      if(this.getAttribute('redirectUrl') != "") {
        document.location.replace(this.getAttribute('redirectUrl'));
      }
    }
  }
}

/* ---- detection functions ---- */
com.deconcept.FlashObjectUtil.getPlayerVersion = function(reqVer, xiInstall){
  var PlayerVersion = new com.deconcept.PlayerVersion(0,0,0);
  if(navigator.plugins && navigator.mimeTypes.length){
    var x = navigator.plugins["Shockwave Flash"];
    if(x && x.description) {
      PlayerVersion = new com.deconcept.PlayerVersion(x.description.replace(/([a-z]|[A-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
    }
  }else{
    try{
      var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
      for (var i=3; axo!=null; i++) {
        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+i);
        PlayerVersion = new com.deconcept.PlayerVersion([i,0,0]);
      }
    }catch(e){}
    if (reqVer && PlayerVersion.major > reqVer.major) return PlayerVersion; // version is ok, skip minor detection
    // this only does the minor rev lookup if the user's major version 
    // is not 6 or we are checking for a specific minor or revision number
    // see http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
    if (!reqVer || ((reqVer.minor != 0 || reqVer.rev != 0) && PlayerVersion.major == reqVer.major) || PlayerVersion.major != 6 || xiInstall) {
      try{
        PlayerVersion = new com.deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
      }catch(e){}
    }
  }
  return PlayerVersion;
}
com.deconcept.PlayerVersion = function(arrVersion){
  this.major = parseInt(arrVersion[0]) || 0;
  this.minor = parseInt(arrVersion[1]) || 0;
  this.rev = parseInt(arrVersion[2]) || 0;
}
com.deconcept.PlayerVersion.prototype.versionIsValid = function(fv){
  if(this.major < fv.major) return false;
  if(this.major > fv.major) return true;
  if(this.minor < fv.minor) return false;
  if(this.minor > fv.minor) return true;
  if(this.rev < fv.rev) return false;
  return true;
}
/* ---- get value of query string param ---- */
com.deconcept.util = {
  getRequestParameter: function(param){
    var q = document.location.search || document.location.href.hash;
    if(q){
      var startIndex = q.indexOf(param +"=");
      var endIndex = (q.indexOf("&", startIndex) > -1) ? q.indexOf("&", startIndex) : q.length;
      if (q.length > 1 && startIndex > -1) {
        return q.substring(q.indexOf("=", startIndex)+1, endIndex);
      }
    }
    return "";
  },
  removeChildren: function(n){
    while (n.hasChildNodes()) n.removeChild(n.firstChild);
  }
}

/* add Array.push if needed (ie5) */
if (Array.prototype.push == null) { Array.prototype.push = function(item) { this[this.length] = item; return this.length; }}

/* add some aliases for ease of use/backwards compatibility */
var getQueryParamValue = com.deconcept.util.getRequestParameter;
var FlashObject = com.deconcept.FlashObject;


/**
END FLASH CONTENT
**********************************************************************************************************************************/


/**
DROP DOWN MENU
**********************************************************************************************************************************/



var TimeOut         = 300;
var currentLayer    = null;
var currentitem     = null;
var currentLayerNum = 0;
var noClose         = 0;
var closeTimer      = null;

function mopen(n) {
  var l  = document.getElementById("menu"+n);
  var mm = document.getElementById("mmenu"+n);
	
  if(l) {
    mcancelclosetime();
    l.style.visibility='visible';
    if(currentLayer && (currentLayerNum != n))
      currentLayer.style.visibility='hidden';
    currentLayer = l;
    currentitem = mm;
    currentLayerNum = n;			
  } else if(currentLayer) {
    currentLayer.style.visibility='hidden';
    currentLayerNum = 0;
    currentitem = null;
    currentLayer = null;
 	}
}

function mclosetime() {
  closeTimer = window.setTimeout(mclose, TimeOut);
}

function mcancelclosetime() {
  if(closeTimer) {
    window.clearTimeout(closeTimer);
    closeTimer = null;
  }
}

function mclose() {
  if(currentLayer && noClose!=1)   {
    currentLayer.style.visibility='hidden';
    currentLayerNum = 0;
    currentLayer = null;
    currentitem = null;
  } else {
    noClose = 0;
  }
  currentLayer = null;
  currentitem = null;
}

document.onclick = mclose; 

/**
END DROP DOWN MENU
**********************************************************************************************************************************/


