
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 MM_swapImageInPage() { //v3.0
  var i,j=0,x,a=MM_swapImageInPage.arguments; document.MM_srIp=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_srIp[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
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_swapImgRestoreInPage() { //v3.0
  var i,x,a=document.MM_srIp; 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 copy_billing_to_shipping() {
	document.checkout_form.shipping_first_name.value = document.checkout_form.billing_first_name.value;
	document.checkout_form.shipping_last_name.value = document.checkout_form.billing_last_name.value;
	document.checkout_form.shipping_address_one.value = document.checkout_form.billing_address_one.value;
	document.checkout_form.shipping_address_two.value = document.checkout_form.billing_address_two.value;
	document.checkout_form.shipping_city.value = document.checkout_form.billing_city.value;
	document.checkout_form.shipping_state.value = document.checkout_form.billing_state.value;
	document.checkout_form.shipping_zip.value = document.checkout_form.billing_zip.value;
	document.checkout_form.shipping_phone.value = document.checkout_form.billing_phone.value;
	document.checkout_form.shipping_email.value = document.checkout_form.billing_email.value;
	document.checkout_form.shipping_company.value = document.checkout_form.billing_company.value;
}


/* array of menu names as 'menu_' + array key value */
var ddmenus = Array ('ciff','community','news','about','support');
var ddsubmenus = Array ('special','downloads','sponsors','about','social');

/* where should the menu be displayed on the yaxis */
var yPos = 100;

/* page controls */
var timeon = null

/* hide menus when document is rolled over */
document.onmouseover = hideall;

/* init error */
window.onerror = null;

/* detect browser */
var browser = navigator.appName;
var b_version = navigator.appVersion;
var b_agent = navigator.userAgent;
var version = parseFloat(b_version);

function over (message) { 
	clearTimeout(timeon);
	if(document.layers) {
		timeon = setTimeout("hideall()", 400);
	}
	for(i=0; i<ddsubmenus.length; i++) {
		swapview('submenu_' + ddsubmenus[i], 'hidden');
	}
}

/* hides all menus */
function hideall() 
{
	for(i=0; i<ddmenus.length; i++) {
		swapview('menu_' + ddmenus[i], 'hidden'); 
		
	} 
	hideallsubs();
	MM_swapImgRestore();
}

function hideallsubs () {
	for(i=0; i<ddsubmenus.length; i++) {
		swapview('submenu_' + ddsubmenus[i], 'hidden');
		underline('submenu_underline_' + ddsubmenus[i],'none');
	}
}

// roll out of object
function out () {
	if(document.layers) {
		timeon = setTimeout("hideall()", 400);
	}
	for(i=0; i<ddsubmenus.length; i++) {
		swapview('submenu_' + ddsubmenus[i], 'hidden');
		underline('submenu_underline_' + ddsubmenus[i],'none');
	}
}


/* show a menu */
function show(id,obj) 
{

	if (obj) {
		hideall();
		obj.cancelBubble=true;
		var menuID = "menu_" + id;
		if (browser=="Microsoft Internet Explorer"||b_agent.indexOf('Safari')!=-1) {
			move (menuID,"nav_"+id,0);
		} else {
			move (menuID,"nav_"+id,1);
		}
		if (swapview(menuID,'visible')) {
			return true;
		} else {
			return false;
		}
	} else {
		return false;
	}
} // show

/* show a menu */
function showsub(id,obj) 
{
	if (obj) {
		hideallsubs();
		obj.cancelBubble=true;
		var underlineID = "submenu_underline_"+id;
		underline(underlineID,'underline');
		var menuID = "submenu_" + id;
		if (movesub (menuID, "sub_" + id,100)) {
			if (swapview(menuID,'visible')) {
				return true;
			} else {
				return false;
			}
		} else {
			return false;	
		}
	} else {
		return false;
	}
} // show

/* find specifed objects left offset */
function getleft(ele,xo) 
{ 
	var elem = MM_findObj(ele);
	xPos     = elem.offsetLeft; 
	tempEl   = elem.offsetParent; 
	while (tempEl != null) { 
		xPos  += tempEl.offsetLeft; 
		tempEl = tempEl.offsetParent; 
	} 
	return xPos+xo;
} // getleft

/* find specifed objects top offset */
function gettop(ele) 
{
	var elem = MM_findObj(ele);
	var yPos = elem.offsetTop;
	tempEl = elem.offsetParent;
	while (tempEl != null) {
		yPos  += tempEl.offsetTop;
		tempEl = tempEl.offsetParent;
	}
	return yPos;
} // gettop

/* cross-browser function to get an object's style object given its id */
function getStyleObject(obj) 
{
	if(document.getElementById && document.getElementById(obj)) {
		// W3C DOM
		return document.getElementById(obj).style;
	} else if (document.all && document.all(obj)) {
		// MSIE 4 DOM
		return document.all(obj).style;
	} else if (document.layers && document.layers[obj]) {
		// NN 4 DOM.. note: this won't find nested layers
		return document.layers[obj];
	} else {
		return false;
	}
} // getStyleObject

/* move a menu  */
function move(obj,offset,xo) 
{
  var styleObject = getStyleObject(obj);
  if(styleObject) {
	  	// find object's height
		var menuObj = MM_findObj(obj);
		var menuHeight = menuObj.offsetHeight;
		// move object to relative position
		styleObject.left = getleft(offset,xo);
		styleObject.top  = yPos;
		return true;
  } else {
		// we couldn't find the object, so we can't very well move it
		return false;
  }
} // move



function movesub(obj,offset,xo) 
{
  var styleObject = getStyleObject(obj);
  if(styleObject) {
	  	var menuObj = MM_findObj(obj);
		var menuHeight = menuObj.offsetHeight;
		styleObject.left = getleft(offset,xo);
		styleObject.top  = gettop (offset)-menuHeight/2+10;

		return true;
  } else {
		// we couldn't find the object, so we can't very well move it
		return false;
  }
} // movesub



/* sets a found object's visibilty */
function swapview(obj,val) 
{
	var styleObject = getStyleObject(obj);
	if (styleObject) {
		styleObject.visibility = val;
		return true;
	} else {
		return false;
	}
} // swapview


/* change the underline on/off */
function underline(obj,val) 
{
	if (document.getElementById(obj)) {
	    var styleObject = document.getElementById(obj).style;
    	if (styleObject) {
			styleObject.textDecoration = val;
			return true;
		} else {
			return false;
		}
	}
} // underline

/* writes a flash object for IE 7/Windows sp2 fuckup */
function flashobj (id,mv,w,h,bg) {
	var flash = "";
	flash += '<object id="'+id+'" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="'+w+'" height="'+h+'">';
	flash += '<param name="movie" value="flash/'+mv+'" />';
	flash += '<param name="quality" value="high" />';
	flash += '<embed src="flash/'+mv+'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'+w+'" height="'+h+'"></embed>';
	flash += '</object>';
	document.write(flash);
}

/* a whole bunch of random cross browser handling tricks and hacks follows */

// initialize hacks whenever the page loads
window.onload = initializeHacks;

function initializeHacks() 
{
    // this ugly little hack resizes a blank div to make sure you can click
    // anywhere in the window for Mac MSIE 5
  if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
		&& (navigator.platform.indexOf('Mac') != -1)
		&& getStyleObject('blankDiv')) {
		window.onresize = explorerMacResizeFix;
  }
  resizeBlankDiv();
  // this next function creates a placeholder object for older browsers
  createFakeEventObj();
}

function createFakeEventObj() 
{
	// create a fake event object for older browsers to avoid errors in function call
	// when we need to pass the event object to functions
  if (!window.event) {
		window.event = false;
  }
} // createFakeEventObj

function resizeBlankDiv() 
{
	// resize blank placeholder div so IE 5 on mac will get all clicks in window
	if ((navigator.appVersion.indexOf('MSIE 5') != -1) 
		&& (navigator.platform.indexOf('Mac') != -1)
		&& getStyleObject('blankDiv')) {
			getStyleObject('blankDiv').width = document.body.clientWidth - 20;
			getStyleObject('blankDiv').height = document.body.clientHeight - 20;
  }
}

function explorerMacResizeFix()
{
    location.reload(false);
}

