<!--//

var async = true;

var def_country = 'US';  // Default Country

var alt_country = 'CA'; // Alternate Country

var ALERT_TITLE = "Attention!";

var ALERT_BUTTON_TEXT = "Ok";
var ns=(document.layers);
var ie=(document.all);
var w3=(document.getElementById);
var form;
var i;
var payment_showing;



if (navigator.appVersion.indexOf("MSIE")!=-1) {

	var bName = 'MSIE';

	var temp = navigator.appVersion.split("MSIE");

	var bVer = parseFloat(temp[1]);

} else {

	var bName = navigator.appName;

	var bVer = parseFloat(navigator.appVersion);

}



function getstamp()	{

	date = new Date();

	return date.getTime();

}



function loadDoc(url, postdata, cb_func) {

	var req;

	req = false;

    if (window.XMLHttpRequest) {

    	try { req = new XMLHttpRequest(); } catch(e) { req = false; }

    } else if (window.ActiveXObject) {

       	try { req = new ActiveXObject("Msxml2.XMLHTTP"); } 

		catch(e) { 

			try { req = new ActiveXObject("Microsoft.XMLHTTP"); }

			catch(e) { req = false; }

		}

    }

	if(req) {

		req.open("POST", url, async);

		req.onreadystatechange = function() { 

			if (req.readyState == 4 && req.status == 200 && cb_func != "") {

				eval("cb_"+cb_func+"(req.responseText);");

			}

		}

		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

		req.send(postdata);

	}

}



function selectAll (frm, item) {

	var e = frm.elements;

	var re = new RegExp("^"+item);

	for (i=0;i<e.length;i++) {

		if (e[i].id != '' && e[i].id.match(re)) {

			e[i].checked = true;

		}

	}

}



function del_event (id) {

	if (jsconfirm()) location.href = 'index.php?l=account&d=deletereg&id='+id+'&tab=5';

}



function jsconfirm (note) {

	if (note == undefined) note = 'Are you sure you want to complete this action?';

	if (confirm(note)) {

		return true;

	} else {

		return false;

	}

}



function cb_updatePrice (txt) {

	var result = txt.split("||");

	document.getElementById("product_price").innerHTML = result[0];

	if (document.getElementById("list_price")) document.getElementById("list_price").innerHTML = result[1];

	if (document.getElementById("sale_price")) document.getElementById("sale_price").innerHTML = result[2];

}



function cb_getResult (txt) {

	document.getElementById("message").innerHTML = txt;

}



function cb_revResult (txt) {

	eval(txt);

}



function cb_payResult (txt) {

	if (txt != "ok") {

		document.getElementById("message").innerHTML = txt;

	} else {

		document.forms['payment'].submit();

	}

}



function rowVisibility (strVisibility, intRowIndex) {

	if (navigator.product == "Gecko" && navigator.productSub && navigator.productSub > "20041010" && (navigator.userAgent.indexOf("rv:1.8") != -1 || navigator.userAgent.indexOf("rv:1.9") != -1)) {

		document.getElementById("cc_table").rows[intRowIndex].style.visibility = strVisibility;

	} else if (strVisibility == "visible") {

		if(document.all && document.compatMode && document.compatMode == "CSS1Compat" && !window.opera) {

			document.getElementById("cc_table").rows[intRowIndex].style.display = "block";

		} else if (document.getElementById && document.getElementById("cc_table").rows) {

			document.getElementById("cc_table").rows[intRowIndex].style.display = "table-row";

		}

	} else if (strVisibility == "collapse") {

		document.getElementById("cc_table").rows[intRowIndex].style.display = "none";

	}

}



function cc_type (val) {

	if (val == 'Solo' || val == 'Switch') {

		rowVisibility('visible', 5);

		rowVisibility('visible', 6);

	} else {

		rowVisibility('collapse', 5);

		rowVisibility('collapse', 6);

	}

}



function clearMessages () {

	document.getElementById("message").innerHTML = '';

}



function updatePrice (frm, url) {

	var e = frm.elements;

	var opts = [];

	var post;

	for (i=0; i<e.length; i++) {

		if (e[i].type == 'select-one') {

			opts.push(e[i].name+"="+e[i].value);

		}

		if ((e[i].type == 'radio' || e[i].type == 'checkbox') && e[i].checked) {

			opts.push(e[i].name+"="+e[i].value);

		}

	}

	post = opts.join("&");

	loadDoc(url, post, 'updatePrice');

}



function check_payment (url) {

	var e = document.forms['payment'].elements;

	var data = [];

	var post;

	for (i=0; i<e.length; i++) data.push(e[i].name+"="+e[i].value);

	post = data.join("&");

	loadDoc(url, post, 'payResult');

}

function check_quickcheckout (url) {
	var e = document.forms['customer_info'].elements;
	var data = [];
	var post;
	for (i=0; i<e.length; i++) {
		if ((e[i].type == 'radio' || e[i].type == 'checkbox') && e[i].checked) {
			data.push(e[i].name+"="+e[i].value);
		}
		if (e[i].type != 'radio' && e[i].type != 'checkbox') data.push(e[i].name+"="+e[i].value);
	}
	post = data.join("&");
	loadDoc(url, post, 'revResult');
}
function fillDIV (inner_cont, inner_layer, append) {
	if (w3)
		var e = document.getElementById(inner_layer);
	else if (ie)
		var e = document.all[inner_layer];
	else if (ns)
		var e = document.layers[inner_layer];

	if (append == 1) {
		e.innerHTML += inner_cont;
	} else {
		e.innerHTML = inner_cont;
	}
}

function edit_event (id) {

	loadDoc('index.php?l=edit_registry', 'id='+id, 'revResult');

}



function hold_order () {

	loadDoc('checkout.php?l=hold_order', '', 'revResult');

}



function ajaxPost (frm, url, result) {

	if (!result) result = 'getResult';

	var e = frm.elements;

	var data = [];

	var post;

	for (i=0; i<e.length; i++) {

		if ((e[i].type == 'checkbox' && e[i].checked) || e[i].type != 'checkbox') {

			data.push(e[i].name+"="+e[i].value);

		}

	}

	post = data.join("&");

	loadDoc(url, post, result);

}



function pause (form_name, perform) {

	form = document.forms[form_name];

	ajaxPost(form, 'index.php?l=loading', 'revResult');

	setTimeout("ajaxPost(form, '"+perform+"', 'revResult')", 2000);

}



function toggle_country (value, type) {

	if (value != def_country && value != alt_country && value != "") {

		document.getElementById(type+'_other').style.display = 'inline';

		document.getElementById(type+'_state').style.display = 'none';

		document.forms['customer_info'].elements['userinfo['+type+'_oset]'].value = '1';

	} else {

		document.getElementById(type+'_other').style.display = 'none';

		document.getElementById(type+'_state').style.display = 'inline';

		document.forms['customer_info'].elements['userinfo['+type+'_oset]'].value = '0';

	}
}

function toggle_payment (name) {
	document.getElementById(name).style.display = 'inline';
	if (payment_showing != null) document.getElementById(payment_showing).style.display = 'none';
	payment_showing = name;
}



function reset_forms (items, form) {

	for (x in items) {

		var titem = items[x];

		var fitem = document.forms[form].elements[titem];

		if (fitem.selectedIndex != null)

			fitem.selectedIndex = 0;

		else

			fitem.value = '';

	}

}



function bill_to_ship (form) {

	if (form.elements['userinfo[same]'].checked) {

		form.elements['userinfo[ship_first_name]'].value		= form.elements['userinfo[bill_first_name]'].value;

		form.elements['userinfo[ship_last_name]'].value			= form.elements['userinfo[bill_last_name]'].value;

		form.elements['userinfo[ship_company_name]'].value		= form.elements['userinfo[bill_company_name]'].value;

		form.elements['userinfo[ship_address1]'].value			= form.elements['userinfo[bill_address1]'].value;

		form.elements['userinfo[ship_address2]'].value			= form.elements['userinfo[bill_address2]'].value;

		form.elements['userinfo[ship_city]'].value				= form.elements['userinfo[bill_city]'].value;

		form.elements['userinfo[ship_state]'].selectedIndex		= form.elements['userinfo[bill_state]'].selectedIndex;

		form.elements['userinfo[ship_other]'].value				= form.elements['userinfo[bill_other]'].value;

		form.elements['userinfo[ship_zip]'].value				= form.elements['userinfo[bill_zip]'].value;

		form.elements['userinfo[ship_country]'].selectedIndex	= form.elements['userinfo[bill_country]'].selectedIndex;

		toggle_country(form.elements['userinfo[ship_country]'].value, 'ship');

	}

}



function popupImage (full_url, url) {

	 window.open(full_url+'index.php?l=product_images&'+url,'popupImage','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=475,height=475,screenX=150,screenY=150,top=150,left=150');

}



function reload_image (prefix, num) {

	var stamp = getstamp();

	document.images['verify_image'+num].src = prefix+'include/classes/class.iverify.php?'+stamp;

	if (bName == "MSIE" && bVer == 6) {

		alert('Image Reloaded Successfully!');

	}

}



function toggle_div (fname) {

	if (document.getElementById(fname).style.display == 'block')

		document.getElementById(fname).style.display = 'none';

	else 

		document.getElementById(fname).style.display = 'block';

}



function validate (form) {

	if (document.getElementById("plugin_terms")) {

		if (!form.elements['agree'].checked) {

			alert('Please read and agree to the terms and conditions!');

			return false;

		}

	}

	form.submit();

}

// Collapsable Panel

var Spry;
if (!Spry) Spry = {};
if (!Spry.Widget) Spry.Widget = {};

Spry.Widget.CollapsiblePanel = function(element, opts)
{
	this.element = this.getElement(element);
	this.focusElement = null;
	this.hoverClass = "CollapsiblePanelTabHover";
	this.openClass = "CollapsiblePanelOpen";
	this.closedClass = "CollapsiblePanelClosed";
	this.focusedClass = "CollapsiblePanelFocused";
	this.enableAnimation = true;
	this.enableKeyboardNavigation = true;
	this.animator = null;
	this.hasFocus = false;
	this.contentIsOpen = true;

	this.openPanelKeyCode = Spry.Widget.CollapsiblePanel.KEY_DOWN;
	this.closePanelKeyCode = Spry.Widget.CollapsiblePanel.KEY_UP;

	Spry.Widget.CollapsiblePanel.setOptions(this, opts);

	this.attachBehaviors();
};

Spry.Widget.CollapsiblePanel.prototype.getElement = function(ele)
{
	if (ele && typeof ele == "string")
		return document.getElementById(ele);
	return ele;
};

Spry.Widget.CollapsiblePanel.prototype.addClassName = function(ele, className)
{
	if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) != -1))
		return;
	ele.className += (ele.className ? " " : "") + className;
};

Spry.Widget.CollapsiblePanel.prototype.removeClassName = function(ele, className)
{
	if (!ele || !className || (ele.className && ele.className.search(new RegExp("\\b" + className + "\\b")) == -1))
		return;
	ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
};

Spry.Widget.CollapsiblePanel.prototype.hasClassName = function(ele, className)
{
	if (!ele || !className || !ele.className || ele.className.search(new RegExp("\\b" + className + "\\b")) == -1)
		return false;
	return true;
};

Spry.Widget.CollapsiblePanel.prototype.setDisplay = function(ele, display)
{
	if( ele )
		ele.style.display = display;
};

Spry.Widget.CollapsiblePanel.setOptions = function(obj, optionsObj, ignoreUndefinedProps)
{
	if (!optionsObj)
		return;
	for (var optionName in optionsObj)
	{
		if (ignoreUndefinedProps && optionsObj[optionName] == undefined)
			continue;
		obj[optionName] = optionsObj[optionName];
	}
};

Spry.Widget.CollapsiblePanel.prototype.onTabMouseOver = function(e)
{
	this.addClassName(this.getTab(), this.hoverClass);
	return false;
};

Spry.Widget.CollapsiblePanel.prototype.onTabMouseOut = function(e)
{
	this.removeClassName(this.getTab(), this.hoverClass);
	return false;
};

Spry.Widget.CollapsiblePanel.prototype.open = function()
{
	this.contentIsOpen = true;
	if (this.enableAnimation)
	{
		if (this.animator)
			this.animator.stop();
		this.animator = new Spry.Widget.CollapsiblePanel.PanelAnimator(this, true, { duration: this.duration, fps: this.fps, transition: this.transition });
		this.animator.start();
	}
	else
		this.setDisplay(this.getContent(), "block");

	this.removeClassName(this.element, this.closedClass);
	this.addClassName(this.element, this.openClass);
};

Spry.Widget.CollapsiblePanel.prototype.close = function()
{
	this.contentIsOpen = false;
	if (this.enableAnimation)
	{
		if (this.animator)
			this.animator.stop();
		this.animator = new Spry.Widget.CollapsiblePanel.PanelAnimator(this, false, { duration: this.duration, fps: this.fps, transition: this.transition });
		this.animator.start();
	}
	else
		this.setDisplay(this.getContent(), "none");

	this.removeClassName(this.element, this.openClass);
	this.addClassName(this.element, this.closedClass);
};

Spry.Widget.CollapsiblePanel.prototype.onTabClick = function(e)
{
	if (this.isOpen())
		this.close();
	else
		this.open();

	this.focus();

	return this.stopPropagation(e);
};

Spry.Widget.CollapsiblePanel.prototype.onFocus = function(e)
{
	this.hasFocus = true;
	this.addClassName(this.element, this.focusedClass);
	return false;
};

Spry.Widget.CollapsiblePanel.prototype.onBlur = function(e)
{
	this.hasFocus = false;
	this.removeClassName(this.element, this.focusedClass);
	return false;
};

Spry.Widget.CollapsiblePanel.KEY_UP = 38;
Spry.Widget.CollapsiblePanel.KEY_DOWN = 40;

Spry.Widget.CollapsiblePanel.prototype.onKeyDown = function(e)
{
	var key = e.keyCode;
	if (!this.hasFocus || (key != this.openPanelKeyCode && key != this.closePanelKeyCode))
		return true;

	if (this.isOpen() && key == this.closePanelKeyCode)
		this.close();
	else if ( key == this.openPanelKeyCode)
		this.open();
	
	return this.stopPropagation(e);
};

Spry.Widget.CollapsiblePanel.prototype.stopPropagation = function(e)
{
	if (e.preventDefault) e.preventDefault();
	else e.returnValue = false;
	if (e.stopPropagation) e.stopPropagation();
	else e.cancelBubble = true;
	return false;
};

Spry.Widget.CollapsiblePanel.prototype.attachPanelHandlers = function()
{
	var tab = this.getTab();
	if (!tab)
		return;

	var self = this;
	Spry.Widget.CollapsiblePanel.addEventListener(tab, "click", function(e) { return self.onTabClick(e); }, false);
	Spry.Widget.CollapsiblePanel.addEventListener(tab, "mouseover", function(e) { return self.onTabMouseOver(e); }, false);
	Spry.Widget.CollapsiblePanel.addEventListener(tab, "mouseout", function(e) { return self.onTabMouseOut(e); }, false);

	if (this.enableKeyboardNavigation)
	{
		// XXX: IE doesn't allow the setting of tabindex dynamically. This means we can't
		// rely on adding the tabindex attribute if it is missing to enable keyboard navigation
		// by default.

		// Find the first element within the tab container that has a tabindex or the first
		// anchor tag.
		
		var tabIndexEle = null;
		var tabAnchorEle = null;

		this.preorderTraversal(tab, function(node) {
			if (node.nodeType == 1 /* NODE.ELEMENT_NODE */)
			{
				var tabIndexAttr = tab.attributes.getNamedItem("tabindex");
				if (tabIndexAttr)
				{
					tabIndexEle = node;
					return true;
				}
				if (!tabAnchorEle && node.nodeName.toLowerCase() == "a")
					tabAnchorEle = node;
			}
			return false;
		});

		if (tabIndexEle)
			this.focusElement = tabIndexEle;
		else if (tabAnchorEle)
			this.focusElement = tabAnchorEle;

		if (this.focusElement)
		{
			Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement, "focus", function(e) { return self.onFocus(e); }, false);
			Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement, "blur", function(e) { return self.onBlur(e); }, false);
			Spry.Widget.CollapsiblePanel.addEventListener(this.focusElement, "keydown", function(e) { return self.onKeyDown(e); }, false);
		}
	}
};

Spry.Widget.CollapsiblePanel.addEventListener = function(element, eventType, handler, capture)
{
	try
	{
		if (element.addEventListener)
			element.addEventListener(eventType, handler, capture);
		else if (element.attachEvent)
			element.attachEvent("on" + eventType, handler);
	}
	catch (e) {}
};

Spry.Widget.CollapsiblePanel.prototype.preorderTraversal = function(root, func)
{
	var stopTraversal = false;
	if (root)
	{
		stopTraversal = func(root);
		if (root.hasChildNodes())
		{
			var child = root.firstChild;
			while (!stopTraversal && child)
			{
				stopTraversal = this.preorderTraversal(child, func);
				try { child = child.nextSibling; } catch (e) { child = null; }
			}
		}
	}
	return stopTraversal;
};

Spry.Widget.CollapsiblePanel.prototype.attachBehaviors = function()
{
	var panel = this.element;
	var tab = this.getTab();
	var content = this.getContent();

	if (this.contentIsOpen || this.hasClassName(panel, this.openClass))
	{
		this.addClassName(panel, this.openClass);
		this.removeClassName(panel, this.closedClass);
		this.setDisplay(content, "block");
		this.contentIsOpen = true;
	}
	else
	{
		this.removeClassName(panel, this.openClass);
		this.addClassName(panel, this.closedClass);
		this.setDisplay(content, "none");
		this.contentIsOpen = false;
	}

	this.attachPanelHandlers();
};

Spry.Widget.CollapsiblePanel.prototype.getTab = function()
{
	return this.getElementChildren(this.element)[0];
};

Spry.Widget.CollapsiblePanel.prototype.getContent = function()
{
	return this.getElementChildren(this.element)[1];
};


Spry.Widget.CollapsiblePanel.prototype.isOpen = function()
{
	return this.contentIsOpen;
};

Spry.Widget.CollapsiblePanel.prototype.getElementChildren = function(element)
{
	var children = [];
	var child = element.firstChild;
	while (child)
	{
		if (child.nodeType == 1 /* Node.ELEMENT_NODE */)
			children.push(child);
		child = child.nextSibling;
	}
	return children;
};

Spry.Widget.CollapsiblePanel.prototype.focus = function()
{
	if (this.focusElement && this.focusElement.focus)
		this.focusElement.focus();
};

/////////////////////////////////////////////////////

Spry.Widget.CollapsiblePanel.PanelAnimator = function(panel, doOpen, opts)
{
	this.timer = null;
	this.interval = 0;

	this.fps = 60;
	this.duration = 500;
	this.startTime = 0;

	this.transition = Spry.Widget.CollapsiblePanel.PanelAnimator.defaultTransition;

	this.onComplete = null;

	this.panel = panel;
	this.content = panel.getContent();
	this.doOpen = doOpen;

	Spry.Widget.CollapsiblePanel.setOptions(this, opts, true);

	this.interval = Math.floor(1000 / this.fps);

	var c = this.content;

	var curHeight = c.offsetHeight ? c.offsetHeight : 0;
	this.fromHeight = (doOpen && c.style.display == "none") ? 0 : curHeight;

	if (!doOpen)
		this.toHeight = 0;
	else
	{
		if (c.style.display == "none")
		{
			// The content area is not displayed so in order to calculate the extent
			// of the content inside it, we have to set its display to block.

			c.style.visibility = "hidden";
			c.style.display = "block";
		}

		// Clear the height property so we can calculate
		// the full height of the content we are going to show.

		c.style.height = "";
		this.toHeight = c.offsetHeight;
	}

	this.distance = this.toHeight - this.fromHeight;
	this.overflow = c.style.overflow;

	c.style.height = this.fromHeight + "px";
	c.style.visibility = "visible";
	c.style.overflow = "hidden";
	c.style.display = "block";
};

Spry.Widget.CollapsiblePanel.PanelAnimator.defaultTransition = function(time, begin, finish, duration) { time /= duration; return begin + ((2 - time) * time * finish); };

Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.start = function()
{
	var self = this;
	this.startTime = (new Date).getTime();
	this.timer = setTimeout(function() { self.stepAnimation(); }, this.interval);
};

Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stop = function()
{
	if (this.timer)
	{
		clearTimeout(this.timer);

		// If we're killing the timer, restore the overflow property.

		this.content.style.overflow = this.overflow;
	}

	this.timer = null;
};

Spry.Widget.CollapsiblePanel.PanelAnimator.prototype.stepAnimation = function()
{
	var curTime = (new Date).getTime();
	var elapsedTime = curTime - this.startTime;

	if (elapsedTime >= this.duration)
	{
		if (!this.doOpen)
			this.content.style.display = "none";
		this.content.style.overflow = this.overflow;
		this.content.style.height = this.toHeight + "px";
		if (this.onComplete)
			this.onComplete();
		return;
	}

	var ht = this.transition(elapsedTime, this.fromHeight, this.distance, this.duration);

	this.content.style.height = ((ht < 0) ? 0 : ht) + "px";

	var self = this;
	this.timer = setTimeout(function() { self.stepAnimation(); }, this.interval);
};

Spry.Widget.CollapsiblePanelGroup = function(element, opts)
{
	this.element = this.getElement(element);
	this.opts = opts;

	this.attachBehaviors();
};

Spry.Widget.CollapsiblePanelGroup.prototype.setOptions = Spry.Widget.CollapsiblePanel.prototype.setOptions;
Spry.Widget.CollapsiblePanelGroup.prototype.getElement = Spry.Widget.CollapsiblePanel.prototype.getElement;
Spry.Widget.CollapsiblePanelGroup.prototype.getElementChildren = Spry.Widget.CollapsiblePanel.prototype.getElementChildren;

Spry.Widget.CollapsiblePanelGroup.prototype.setElementWidget = function(element, widget)
{
	if (!element || !widget)
		return;
	if (!element.spry)
		element.spry = new Object;
	element.spry.collapsiblePanel = widget;
};

Spry.Widget.CollapsiblePanelGroup.prototype.getElementWidget = function(element)
{
	return (element && element.spry && element.spry.collapsiblePanel) ? element.spry.collapsiblePanel : null;
};

Spry.Widget.CollapsiblePanelGroup.prototype.getPanels = function()
{
	if (!this.element)
		return [];
	return this.getElementChildren(this.element);
};

Spry.Widget.CollapsiblePanelGroup.prototype.getPanel = function(panelIndex)
{
	return this.getPanels()[panelIndex];
};

Spry.Widget.CollapsiblePanelGroup.prototype.attachBehaviors = function()
{
	if (!this.element)
		return;

	var cpanels = this.getPanels();
	var numCPanels = cpanels.length;
	for (var i = 0; i < numCPanels; i++)
	{
		var cpanel = cpanels[i];
		this.setElementWidget(cpanel, new Spry.Widget.CollapsiblePanel(cpanel, this.opts));
	}
};

Spry.Widget.CollapsiblePanelGroup.prototype.openPanel = function(panelIndex)
{
	var w = this.getElementWidget(this.getPanel(panelIndex));
	if (w && !w.isOpen())
		w.open();
};

Spry.Widget.CollapsiblePanelGroup.prototype.closePanel = function(panelIndex)
{
	var w = this.getElementWidget(this.getPanel(panelIndex));
	if (w && w.isOpen())
		w.close();
};

Spry.Widget.CollapsiblePanelGroup.prototype.openAllPanels = function()
{
	var cpanels = this.getPanels();
	var numCPanels = cpanels.length;
	for (var i = 0; i < numCPanels; i++)
	{
		var w = this.getElementWidget(cpanels[i]);
		if (w && !w.isOpen())
			w.open();
	}
};

Spry.Widget.CollapsiblePanelGroup.prototype.closeAllPanels = function()
{
	var cpanels = this.getPanels();
	var numCPanels = cpanels.length;
	for (var i = 0; i < numCPanels; i++)
	{
		var w = this.getElementWidget(cpanels[i]);
		if (w && w.isOpen())
			w.close();
	}
};


//-->


