/*
Copyright 2006 Active Media Architects, Inc. - www.activema.com
Usage of these scripts is limited to their original intent as developed and deployed for Activa Commerce Website by Active Media Architects, Inc. Copying, selling or distributing of these scripts, in whole or in part, is strictly prohibited.
*/


	///////////////////////////////////////
	// Frame Buster
	///////////////////////////////////////

if (window != window.top)
  top.location.href = location.href;


	///////////////////////////////////////
	// On-Click-Pop-Center
	///////////////////////////////////////
	// Requires "onClick="NewWindow(this.href,'title','400','300','no');return false;"" in the A HREF tag
	// Example: <a href="doc.html" onClick="NewWindow(this.href,'title','400','300','no');return false;">LINK</a>

function NewWindow(mypage, myname, w, h, scroll) {
var winl = (screen.width - w) / 2;
var wint = (screen.height - h) / 2;
winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable=yes,,toolbar=no,menubar=no'
win = window.open(mypage, myname, winprops)
if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}




	///////////////////////////////////////
	// Auto-Select Field
	///////////////////////////////////////
	// Requires "onLoad=ready()" in the BODY tag
	// Example: <body onLoad=ready()>
	// Requires form name to match where it reads "form" in script
	// Example: <form name="form">
	// Requires form field name to match where it reads "field" in script
	// Example: <input name="field">

function ready(){document.form.field.focus();}



	///////////////////////////////////////
	// Form Validation
	///////////////////////////////////////

function validateGiftCertificate ( form ) {
	return (
				 checkSelect(form.elements["amount"],"V","","Please enter an amount.",false) &&
				 checkSelect(form.elements["recipient_name"],"V","Please enter recipient's name",false) &&
				 checkSelect(form.elements["recipient_email"],"V","","Please enter your recipient's E-mail Address.",false) &&
				 checkEmail(form.elements["recipient_email"],false) &&
				 checkSelect(form.elements["recipient_email"],"V","joe@example.com","Please supply valid E-mail Address.",false));
}

function validateContact(form) {
	return (
				 checkSelect(form.elements["name"],"V","","Please enter your Name.",false) &&
				 checkSelect(form.elements["address"],"V","","Please enter your Address.",false) &&
				 checkSelect(form.elements["email"],"V","","Please enter your E-mail.",false) &&
				 checkEmail(form.elements["email"],false) &&
				 checkSelect(form.elements["email"],"V","joe@example.com","Please supply a valid E-mail Address.",false) &&
				 checkSelect(form.elements["message"],"V","","Please provide us with your Question/Comment.",false));
}

function validateDesignRequest(form) {
	return (
				 checkSelect(form.elements["name"],"V","","Please enter your Name.",false) &&
				 checkSelect(form.elements["address"],"V","","Please enter your Address.",false) &&
				 checkSelect(form.elements["phone"],"V","","Please enter your Phone Number.",false) &&
				 checkSelect(form.elements["email"],"V","","Please enter your E-mail.",false) &&
				 checkEmail(form.elements["email"],false) &&
				 checkSelect(form.elements["email"],"V","joe@example.com","Please supply a valid E-mail Address.",false) &&
				 checkSelect(form.elements["short_description"],"V","","Please provide us with your Short Description.",false));
}

function validateCustomQuote(form) {
	return validateDesignRequest(form) 
		&& checkSelect(form.elements["quantity"],"V","","Please enter your desired quantity.",false);
}

function validateResellerRequest(form) {
	if ( form.elements["firstname"] && form.elements["lastname"] ) {
		name_tested = checkSelect(form.elements["firstname"],"V","","Please enter your First Name.",false) &&
				 checkSelect(form.elements["lastname"],"V","","Please enter your Last Name.",false);
	} else {
		name_tested = checkSelect(form.elements["fullname"],"V","","Please enter your Full Name.",false);
	}

	return (
		name_tested &&
		checkSelect(form.elements["address"],"V","","Please provide us with your Address.",false) &&
		checkSelect(form.elements["email"],"V","","Please enter your E-mail.",false) &&
		checkEmail(form.elements["email"],false) &&
		checkSelect(form.elements["email"],"V","joe@example.com","Please supply a valid E-mail Address.",false) &&
		checkSelect(form.elements["phone"],"V","","Please provide us with your Phone Number.",false) &&
		checkSelect(form.elements["inquiry"],"V","","Please provide us with your Inquiry.",false)
	);
}

function validateSubmitQuestion(form) {
	return (
				 checkSelect(form.elements["submitquestion[fullname]"],"V","","Please enter your Your Name.",false) &&
				 checkSelect(form.elements["submitquestion[email]"],"V","","Please enter your E-mail.",false) &&
				 checkEmail(form.elements["submitquestion[email]"],false) &&
				 checkSelect(form.elements["submitquestion[email]"],"V","joe@example.com","Please supply a valid E-mail Address.",false) &&
				 checkSelect(form.elements["submitquestion[question]"],"V","","Please provide us with your Question.",false));
}

function validateSendToFriend(form) {
	return (
				 checkSelect(form.elements["to_name"],"V","","Please enter your Friend's Name.",false) &&
				 checkSelect(form.elements["to_email"],"V","","Please enter your Friend's E-mail.",false) &&
				 checkEmail(form.elements["to_email"],false) &&
				 checkSelect(form.elements["to_email"],"V","joe@example.com","Please supply a valid E-mail Address.",false) &&
				 checkSelect(form.elements["to_name"],"V","","Please enter your Name.",false) &&
				 checkSelect(form.elements["from_email"],"V","","Please enter your E-mail.",false) &&
				 checkEmail(form.elements["from_email"],false) &&
				 checkSelect(form.elements["from_email"],"V","joe@example.com","Please supply a valid E-mail Address.",false) &&
				 checkSelect(form.elements["message"],"V","","Please provide us with your Message.",false));
}

function validateTellAFriend(form) {
	return (
				 checkSelect(form.elements["from_name"],"V","","Please enter your Name.",false) &&
				 checkSelect(form.elements["from_email"],"V","","Please enter your E-mail.",false) &&
				 checkEmail(form.elements["from_email"],false) &&
				 checkSelect(form.elements["from_email"],"V","joe@example.com","Please supply a valid E-mail Address.",false) &&
				 checkSelect(did("to_name_1"),"V","","Please enter your Name.",false) &&
				 checkEmail(did("to_email_1"),false) &&
				 checkSelect(did("to_email_1"),"V","joe@example.com","Please supply a valid E-mail Address.",false) &&
				 checkSelect(form.elements["message"],"V","","Please provide us with your Message.",false));
}

function validateEmailSignup(form) {
	return (
				 checkSelect(form.elements["fullname"],"V","","Please enter Your Name.",false) &&
				 checkSelect(form.elements["fullname"],"V","Your Name","Please enter your real Name.",false) &&
				 checkSelect(form.elements["fullname"],"V","your name","Please enter your real Name.",false) &&
				 checkSelect(form.elements["fullname"],"V","my name","Please enter your real Name.",false) &&
				 checkSelect(form.elements["fullname"],"V","name","Please enter your real Name.",false) &&
				 checkSelect(form.elements["fullname"],"V","asdf","Please enter your real Name.",false) &&
				 checkSelect(form.elements["email"],"V","","Please enter your E-mail.",false) &&
				 checkEmail(form.elements["email"],false) &&
				 checkSelect(form.elements["email"],"V","joe@example.com","Please supply a valid E-mail Address.",false));
}

function validateUnsub(form) {
	return (
				 checkSelect(form.elements["email"],"V","","Please enter your E-mail.",false) &&
				 checkEmail(form.elements["email"],false) &&
				 checkSelect(form.elements["email"],"V","joe@example.com","Please supply a valid E-mail Address.",false));
}

function validatePay(form) {
	return (
				//validateBillingAddress(form) &&
				 //checkSelect(form.elements["billing_id"],"V","","You must select a Credit Card",false) &&
				 checkSelect(form.elements["billing[fullname]"],"V","","Please enter the Name exactly as it appears on the Credit Card.",false) &&
				 checkSelect(form.elements["billing[cc_num]"],"V","","You have chosen to pay by Credit Card. Please enter your Credit Card Number before continuing.",false) &&
				 checkSelect(form.elements["billing[exp_month]"],"V","00","Please select the Month this credit card expires.",false) &&
				 checkSelect(form.elements["billing[exp_year]"],"V","00","Please select the Year this credit card expires.",false) &&
				 checkSelect(form.elements["billing[ccv]"],"V","","Please enter your credit card's 3-digit Identification Number.",false));
}

function validateSignin(form) {
	return (
				 checkSelect(form.elements["loginemail"],"V","","Please enter your E-mail Address.",false) &&
				 checkEmail(form.elements["loginemail"],false) &&
				 checkSelect(form.elements["loginemail"],"V","joe@example.com","Please supply valid E-mail Address.",false) &&
				 checkSelect(form.elements["password"],"V","","Please enter your Password.",false));
}

function validatePO(form)
{
	return checkSelect(form.elements["po_number"],"V","","Please enter the PO Number.",false);

}//end validatePO

function validateExpress(form)
{
	if (
		checkSelect(form.elements["email_address"],"V","","Please enter your email address.",false)
	) {
		return validateShipping(form);
	}

	return false;
}

function validateNewAccount(form)
{
	if(form.elements["fullname"]) {
		if(! checkSelect(form.elements["fullname"],"V","","Please enter your full name.",false)) {
			return false;
		}
	}
	if(form.elements["firstname"]) {
		if(! checkSelect(form.elements["firstname"],"V","","Please enter your first name.",false)) {
			return false;
		}
	}
	if(form.elements["lastname"]) {
		if(! checkSelect(form.elements["lastname"],"V","","Please enter your last name.",false)) {
			return false;
		}
	}
	if (
		checkSelect(form.elements["account[email]"],"V","","Please enter your E-mail.",false) &&
		checkEmail(form.elements["account[email]"],false) &&
		checkSelect(form.elements["account[email]"],"V","joe@example.com","Please supply a valid E-mail Address.",false) &&
		checkSelect(form.elements["account[password1]"],"V","","Please create a Password.",false) &&
		checkSelect(form.elements["account[password2]"],"V","","Please confirm your Password.",false)
	) {
		return validateShipping(form);
	}

	return false;
}

function validateSubmitThemeRequest(form) {

	var stateField = "state";
	if ( form.elements["country"].value == 38 || form.elements["country"].value == 'CA' ) {
		stateField = "province";
	} else if ( form.elements["country"].value != 213 && form.elements["country"].value != 'US' ) {
		stateField = "other";
	}
	
	var ret = (
		checkSelect(form.elements["company_name"],"V","","Please enter your company name.",false) &&
		checkSelect(form.elements["name"],"V","","Please enter your name.",false) &&
		checkSelect(form.elements["country"],"V","","Please enter the country.",false) &&
		checkSelect(form.elements["address"],"V","","Please enter the address.",false) &&
		checkSelect(form.elements["city"],"V","","Please enter the city.",false) &&
		checkSelect(form.elements[stateField],"V","","Please enter the state/province.",false) &&
		checkSelect(form.elements["zip"],"V","","Please enter the zip code.",false) &&
		checkSelect(form.elements["email"],"V","","Please enter your e-mail.",false) &&
		checkSelect(form.elements["phone"],"V","","Please enter your phone number.",false) &&
		checkSelect(form.elements["calendar_type"],"V","","Please select the calendar type.",false) &&
		checkSelect(form.elements["theme_name"],"V","","Please select the theme.",false)
	);
	
	if(!ret) {
		return ret;
	}
	
	if(did('calendar_type') == '4x6') {
		if(!checkSelect(form.elements["how_many"],"V","","Please enter how many.",false)) {
			return false;
		}
	} else {	
		if(!checkSelect(form.elements["how_many2"],"V","","Please enter how many.",false)) {
			return false;
		}
	}
	
	return checkSelect(form.elements["deadline"],"V","","Please select your deadline.",false);
}


function validateSubmitSampleRequest(form) {

	var stateField = "state";
	if ( form.elements["country"].value == 38 || form.elements["country"].value == 'CA' ) {
		stateField = "province";
	} else if ( form.elements["country"].value != 213 && form.elements["country"].value != 'US' ) {
		stateField = "other";
	}
	
	if( ! (
		checkSelect(form.elements["company_name"],"V","","Please enter your company name.",false) &&
		checkSelect(form.elements["name"],"V","","Please enter your name.",false) &&
		checkSelect(form.elements["email"],"V","","Please enter your e-mail.",false) &&
		checkSelect(form.elements["country"],"V","","Please enter the country.",false) &&
		checkSelect(form.elements["address"],"V","","Please enter the address.",false) &&
		checkSelect(form.elements["city"],"V","","Please enter the city.",false) &&
		checkSelect(form.elements[stateField],"V","","Please enter the state/province.",false) &&
		checkSelect(form.elements["zip"],"V","","Please enter the zip code.",false) &&
		checkSelect(form.elements["phone"],"V","","Please enter your phone number.",false) )) {
		return false;
		}
		
	var isChecked = false;
	for(var i=0;i<form.elements["interested_product[]"].length;i++) {
		if(form.elements["interested_product[]"][i].checked) {
			isChecked = true;
		}
	}
	if(!isChecked) {
		alert('Please select which products you are interested in');
		return false;
	}	
	
	var isChecked = false;
	for(var i=0;i<form.elements["interested_size[]"].length;i++) {
		if(form.elements["interested_size[]"][i].checked) {
			isChecked = true;
		}
	}
	if(!isChecked) {
		alert('Please select which sizes you are interested in');
		return false;
	}			
		
	if(! ( 
		checkSelect(form.elements["how_found"],"V","","Please select how you found us.",false) && 
		checkSelect(form.elements["shipping_method"],"V","","Please select how you would like this shipped.",false)
		)) {
		return false;
	}
}

function validateShipping(form)
{
	var stateField = "shipping[state]";
	if ( form.elements["shipping[country]"].value == 38 || form.elements["shipping[country]"].value == 'CA' ) {
		stateField = "shipping[province]";
	} else if ( form.elements["shipping[country]"].value != 213 && form.elements["shipping[country]"].value != 'US' ) {
		stateField = "shipping[other]";
	}
	
	return (
		checkSelect(form.elements["shipping[country]"],"V","","Please enter the shipping country.",false) &&
		checkSelect(form.elements["shipping[fullname]"],"V","","Please enter the shipping full name.",false) &&
		checkSelect(form.elements["shipping[address]"],"V","","Please enter the shipping Address.",false) &&
		checkSelect(form.elements["shipping[city]"],"V","","Please enter the shipping City.",false) &&
		checkSelect(form.elements[stateField],"V","","Please enter the shipping State/Prov.",false) &&
		checkSelect(form.elements["shipping[zip]"],"V","","Please enter the shipping ZIP.",false) 
		//checkSelect(form.elements["shipping[phone]"],"V","","Please enter the shipping Phone.",false)
	);
}

function validateSearch(form)
{
	return (
		checkString(form.elements['keyword'], 'A keyword is required to search', false)
	);	
}

function validateStockNotification(form)
{
	return (
		checkSelect(form.elements["fullname"],"V","","Please enter your Full Name.",false) &&
		checkSelect(form.elements["email"],"V","","Please enter your E-mail.",false) &&
		checkEmail(form.elements["email"],false) &&
		checkSelect(form.elements["email"],"V","joe@example.com","Please supply a valid E-mail Address.",false)
	);
}

function validateProductComment(form){
	
	if (
		checkSelect(form.elements["customer"],"V","","Please enter your name.",false) &&
		checkSelect(form.elements["rating"],"V","","Please include a product rating.",false) &&
		checkSelect(form.elements["headline"],"V","","Please enter a headline.",false) &&
		checkSelect(form.elements["comment_text"],"V","","Please enter a comment.",false)
	){
		var x = form.elements['rating'].value;
		if(x >= 0 && x <= 10){
			return true;
		}
		alert('Your rating must be a number between 0 and 10.');
		
	}
	return false;
}

function LoginOptionCheck(myself, hasCookie) {

	frm = document.forms['new_login'];
	// if the new Customer item is checked
	var elem_pass_new = document.getElementById('newcustomerpassword');
	var elem_pass_old = document.getElementById('returningcustomerpassword');

	if ( myself.value == "new" ) {
		elem_pass_old.disabled = true;
		elem_pass_old.style.display = "none";
		elem_pass_new.disabled = true;
		elem_pass_new.style.display = "";
	} else {

		elem_pass_old.disabled = false;
		elem_pass_old.style.display = "";
		elem_pass_new.disabled = true;
		elem_pass_new.style.display = "none";
		frm.elements['loginemail'].focus();

	}

	frm.elements['loginemail'].focus();
}

function focusLoginField() {
	if ( typeof(document.new_login) != "undefined" ) {
		document.new_login.loginemail.focus();
	}
}

function loadPreview() {

	try {
		var body_obj = opener.document.getElementById("wysiPlainTextarea1");
		var headline_obj = opener.document.getElementById("headline");
		var child_head = document.getElementById("headline");
		var child_body = document.getElementById("body");

		var caption_value = window.opener.document.getElementById("caption").value;
		var child_caption = document.getElementById("img_caption");
	} catch (e) {
		try {
			console.debug(e);
		} catch (e2) {
			
		}
	}
		
	if ( caption_value != '' && child_caption != null ) {

		child_caption.innerHTML = caption_value;
	}
	child_head.innerHTML = headline_obj.value;
	child_body.innerHTML = body_obj.value;

}

function fadeout() {
	for (var iterator = 0; iterator < arguments.length; iterator++) {
		arguments[iterator].value = '';
		arguments[iterator].disabled = true;
	}
}

function fadein() {
	for (var iterator = 0; iterator < arguments.length; iterator++) {
		arguments[iterator].disabled = false;
	}
	arguments[1].focus();
	arguments[1].select();
}

function quantity_check(frm)
{
	if ( frm.elements['qty'].value < 1 || !validateInteger(frm.elements['qty'].value) ) {
		alert("Quantity must be an integer greater than 0");
		return false;
	}
}

function multiple_quantity_check(frm)
{
	for ( var i=0; i<arr_content_index.length; i++ ) {
		if ( !validateInteger(frm.elements['update[' + arr_content_index[i] + ']'].value) ) {
 			alert("Quantity must be an integer greater than 0");
			return false;
		}
	}
}

function validateInteger( strValue ) {

  var objRegExp  = /(^-?\d\d*$)/;

  return objRegExp.test(strValue);
}

/**
  * pops up a window a fraction of the size of the current one
  */
function popup(url) {
	var ratio = 0.75;
	var def_x = 800;
	var	def_y = 600;
	//get current window's dimensions
	parent_x = document.documentElement.clientWidth;
	if (!parent_x) parent_x = document.body.clientWidth;
	if (!parent_x) parent_x = window.innerWidth;
	if (!parent_x) parent_x = def_x;
	parent_y = document.documentElement.clientHeight;
	if (!parent_y) parent_y = document.body.clientHeight;
	if (!parent_y) parent_y = window.innerHeight;
	if (!parent_y) parent_y = def_y;
	//end get current window's dimensions
	//calculate child dimensions
	var child_x = ratio * parent_x;
	var child_y = ratio * parent_y;
	//end calculate child dimensions
	//popup the window
	window.open(url, "pop_window", "status=1, scrollbars=1, width="+child_x+", height="+child_y);
	//end popup the window
	return false;
}

//lu_unescape(_input) unescapes code which has been escaped for the live updater
function lu_unescape( _input) {
	output = _input;
	output = output.replace(/#lt#/g, "<");
	output = output.replace(/#rt#/g, ">");
	return output;
}

function cartAction(product_id, action)
{
	var frm = document.getElementById('frmCart');

	if ( frm.elements['product_id'] ) {
		frm.elements['product_id'].value = product_id;
	}

	if ( frm.elements['action'] ) {
		frm.elements['action'].value = action;
	}
	
	if ( frm.elements['qty'] && did('qty'+product_id) ) {
		frm.elements['qty'].value = did('qty'+product_id).value;
	}

	if ( multi_quantity_check(frm, false) ) {
		frm.submit();
	}
	return false;
}

function submitComment(product_id)
{
	var frm = document.getElementById('frmComment');

	if ( frm.elements['product_id'] ) {
		frm.elements['product_id'].value = product_id;
	}
	
	if(validateProductComment(frm)){
		frm.submit();
	}
	//return false;
	
}

function favoritesAction(product_id, option_id, action)
{
	var frm = document.getElementById('frmFavorites');

	if ( frm.elements['product_id'] ) {
		frm.elements['product_id'].value = product_id;
	}

	if ( frm.elements['option_id'] ) {
		frm.elements['option_id'].value = option_id;
	}

	if ( frm.elements['action'] ) {
		frm.elements['action'].value = action;
	}

	frm.submit();

	return false;
}

var xmlLoaded = false;
var xslLoaded = false;

function loadXSL()
{
	if ( document.implementation.createDocument ) {
		xslDoc = document.implementation.createDocument("", "", null);
		xslDoc.addEventListener("load", onXSLLoad, false);
		if (ListviewXSL) {
			xslDoc.load('listview/'+ListviewXSL);
		} else {
			xslDoc.load('listview/products.xsl');
		}
	} else if ( window.ActiveXObject ) {
		xslDoc = new ActiveXObject("Microsoft.XMLDOM");
		xslDoc.async = false;
		xslDoc.validateOnParse = false;
		if (ListviewXSL) {
			xslDoc.load('listview/'+ListviewXSL);
		} else {
			xslDoc.load('listview/products.xsl');
		}
		xslLoaded = true;
	}
}

function onXMLLoad()
{
	xmlLoaded = true;
	styleLoad();
}

function onXSLLoad()
{
	xslLoaded = true;
	styleLoad();
}
var timer;
var curr = 1;
function styleLoad()
{
	if ( xmlLoaded && xslLoaded ) {
		var processor = new XSLTProcessor();

		processor.importStylesheet(xslDoc);
		var doc = processor.transformToFragment(xmlDoc, document);

		var list = document.getElementById('list');

		if ( document.getElementById('list') ) {
			document.getElementById('list').parentNode.replaceChild(doc, document.getElementById('list'));
		}
		xmlLoaded = false;
		document.body.style.cursor = 'auto';
		clearTimeout(timer);
		curr = 1;
		//xslLoaded = false;
	}
}


var resorting_selected = false;
var lvhistinitted = false;

function refreshView(page, sort, dir, perpage)
{
	/*var waiting = document.createElement("div");
	waiting.id = 'list';
	waiting.innerHTML = "Loading...";
	document.getElementById('list').parentNode.replaceChild(waiting, document.getElementById('list'));*/

	try {
		if ( !xslLoaded ) {
			loadXSL();
		}
		if ( sort != undefined ) {
			var url = 'listview.php?ret&pg='+page+'&srt='+sort+'&dir='+dir+'&perpage='+perpage+'&viewtype='+ListviewType;
			for( x in lv_tracking) {
				url += "&tracking["+x+"]="+lv_tracking[x];
			}
			hist_set(url.substring(13));
		} else {
			var url = page;
		}

		if ( document.implementation.createDocument ) {
			timer = setTimeout("dotDot()", 0);
			document.body.style.cursor = 'progress';
			xmlDoc = document.implementation.createDocument("", "", null);
			xmlDoc.addEventListener("load", onXMLLoad, false);
			xmlDoc.load(url);

		} else if ( window.ActiveXObject ) {
			xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
			xmlDoc.async = false;
			xmlDoc.validateOnParse = false;
			xmlDoc.load(url);
			document.getElementById('list').innerHTML = xmlDoc.transformNode(xslDoc);
		} else {
			return true;
		}
		return false;
	 } catch (e) {
		if ( resorting_selected ) {
			resorting_selected = false;
			throw "Resort";
		} else {
			if (window.location.toString().indexOf('product_search') > -1) {
				to_url = window.location.pathname+'?ret&pg='+page+'&srt='+sort+'&dir='+dir+'&perpage='+perpage+'&viewtype='+ListviewType;
				for( x in lv_tracking) {
					to_url += "&tracking["+x+"]="+lv_tracking[x];
				}

				window.location = to_url;
				return false;
			} else {
				return true;
			}
		}
	}
}

function refreshSort(page, sort, dir, perpage)
{
	resorting_selected = true;
	try {
		refreshView(page, sort, dir, perpage);
	} catch (e) {
		window.location = window.location.pathname+"?pg="+page+"&srt="+sort+"&dir="+dir+"&perpage="+perpage;
	}
}

function dotDot()
{
	if ( timer ) {
		clearTimeout(timer);
	}

	var dots = '';
	for ( var i=0; i < curr; i++ ) {
		dots = dots + '.';
	}

	curr += 1;
	if ( curr > 3 ) {
		curr = 1;
	}

	var str = 'Loading'+dots;
	document.getElementById('now_loading').innerHTML = str;

	timer = setTimeout("dotDot()", 300);
}

function lv_hist_change() {
	if ( lvhistinitted ) {
		lvhistinitted = false;
		return;
	}
	var params = unFocus.History.getCurrent();
	if ( params == '' ) {
		params = 'viewtype='+ListviewType;
		for( x in lv_tracking) {
			params += "&tracking["+x+"]="+lv_tracking[x];
		}
		if(sort_value) {
			params += "&srt="+sort_value;
		}
	}
	refreshView('listview.php?'+params);
}

function hist_set(str)
{
	lvhistinitted = true;
	unFocus.History.addHistory(str);
}

var express = false;
var storeCC = false;

function doProfileChange(type) {
	var id = '';

	if ( $(type+'_id') ) {
		id = $(type+'_id').value;
	}

	if ( id != '' ) {
		if ( type == 'billingAddr' ) {
			if ( !express ) {
				if ( id == '0' ) {
					$(type+'_id').value = 'new';
					
					$('add_addr_profile').style.display = '';
					$('shipping_action').value = 'true';
					
					$('address_name').value = '';
				} else if ( id == 'new' ) {
					$('add_addr_profile').style.display = '';
					$('shipping_action').value = 'true';
				} else {
					$('update_addr_profile').style.display = '';
					$('shipping_action').value = 'true';
				}
			}
		} else if ( (type == 'billing' && storeCC) || type != 'billing' ) {
			$('update_profile').style.display = '';
		}
		
		$(type+'_action').value = 'true';
	} else {
		if ( type == 'billingAddr' ) {
			if ( !express ) {
				$('update_addr_profile').style.display = 'none';
			}
		} else if ( (type == 'billing' && storeCC) || type != 'billing' ) {
			$('update_profile').style.display = 'none';
		}
	}
}

function changeBilling(id)
{
	$('update_profile').style.display = 'none';
	
	if ( id == '' ) {
		$('add_profile').style.display = '';
		$('billing_action').value = 'true';
	} else {
		$('add_profile').style.display = 'none';
		$('billing_action').value = 'false';
	}
	
	$('add_billing_profile').checked = false;
	$('update_billing_profile').checked = false;
	
	$('name_profile').style.display = 'none';

	var uri = "ActivaUpdater.php";
	var data = "";

	data += nh.compressData("action", "changeBilling");
	data += nh.compressData("id", id);

	ActivaUpdater(uri, data);
}

function update4x6Shipping() {
	if(did('shipcarrier').value == '3') { 
		did('shiptype').style.display = 'none';
	} else { 
		did('shiptype').style.display = '';
	}
}

function changeBillingAddr(id)
{
	$('update_addr_profile').style.display = 'none';

	if ( id == 'new' && !express ) {
		$('add_addr_profile').style.display = '';
		$('shipping_action').value = 'true';
	} else {
		$('add_addr_profile').style.display = 'none';
		$('shipping_action').value = 'false';
	}
	
	$('add_shipping_profile').checked = false;
	$('update_shipping_profile').checked = false;
	
	$('name_billing_addr').style.display = 'none';

	var uri = "ActivaUpdater.php";
	var data = "";

	data += nh.compressData("action", "changeBillingAddr");
	data += nh.compressData("id", id);

	ActivaUpdater(uri, data);
}

function changeShipping(id)
{
	$('update_profile').style.display = 'none';

	if ( id == '' ) {
		$('add_profile').style.display = '';
		$('shipping_action').value = 'true';
	} else {
		$('add_profile').style.display = 'none';
		$('shipping_action').value = 'false';
	}
	
	$('add_shipping_profile').checked = false;
	$('update_shipping_profile').checked = false;
	
	$('name_profile').style.display = 'none';

	var uri = "ActivaUpdater.php";
	var data = "";

	data += nh.compressData("action", "changeShipping");
	data += nh.compressData("id", id);

	ActivaUpdater(uri, data);
}

function showProfileName(type, checked, action) {
	var label = '';
	
	switch ( type ) {
		case 'shipping':
			label = 'Address';
			break;
		case 'billing':
			label = 'Saved Card';
			break;
	}
	
	switch ( action ) {
		case 'add':
			$('name_profile_label').innerHTML = 'Name this '+label;
			break;
		case 'update':
			$('name_profile_label').innerHTML = 'Name of '+label;
			break;
	}
	
	if ( checked ) {
		$('name_profile').style.display = '';
	} else {
		$('name_profile').style.display = 'none';
	}
}

function showBillingAddrName(checked, action) {
	switch ( action ) {
		case 'add':
			$('name_billing_addr_label').innerHTML = 'Name this Address';
			break;
		case 'update':
			$('name_billing_addr_label').innerHTML = 'Name of Address';
			break;
	}
	
	if ( checked ) {
		$('name_billing_addr').style.display = '';
	} else {
		$('name_billing_addr').style.display = 'none';
	}
}

function handleKeyPress(event)
{
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;

	// Enter
	if ( keyCode == 13 ) {
		cartAction('', 'quantity_update');
	}
}

var paymentTypes = new Array('cc', 'pp', 'po', 'gg');

function switchPaymentType(type)
{
	for ( var x=0; x<paymentTypes.length; x++ ) {
		if ( type == paymentTypes[x] ) {
			if ( $(paymentTypes[x]+'_form') ) {
				$(paymentTypes[x]+'_form').style.display = '';
			}
		} else {
			if ( $((paymentTypes[x]+'_form')) ) {
				$(paymentTypes[x]+'_form').style.display = 'none';
			}
		}
	}
}

function multi_quantity_check(frm, popup)
{
	if ( document.getElementById('action') ) {
		if ( document.getElementById('action').value != 'remove_item' ) {
			for ( var i=0; i<frm.length; i++ ) {
				var element = frm.elements[i];
				if ( element.name.search(/qty/) >= 0 ) {
					if ( element.value < 1 || !validateInteger(element.value) ) {
						if ( popup ) {
							alert("Quantity must be an integer greater than 0");
						}
						return false;
					}
				}
			}
		}
	} else {
		for ( var i=0; i<frm.length; i++ ) {
			var element = frm.elements[i];
			if ( element.name.search(/qty/) >= 0 ) {
				if ( element.value < 1 || !validateInteger(element.value) ) {
					if ( popup ) {
						alert("Quantity must be an integer greater than 0");
					}
					return false;
				}
			}
		}
	}

	return true;
}

function getShipServices(carrier)
{
	var uri = "ActivaUpdater.php";

	var data = "";

	data += nh.compressData('action', "getShipServices");
	data += nh.compressData('target', "shiptype");
	data += nh.compressData('carrier', carrier);

	ActivaUpdater(uri, data);
}

function getShipPrice(service, carrier)
{
	$('shiptotalvalue').innerHTML = 'loading';
	$('gnd_total').innerHTML = 'loading';

	if ( $('grp_total') ) {
		$('grp_total').innerHTML = 'loading';
	}
	
	if ( $('pmo_total') ) {
		$('pmo_total').innerHTML = 'loading';
	}

	if ( $('gft_total') ) {
		$('gft_total').innerHTML = 'loading';
	}

	var uri = "ActivaUpdater.php";

	var data = "";

	data = nh.compressData("action", "getShipPrice");
	data += nh.compressData("service", service);
	data += nh.compressData("carrier", carrier);

	ActivaUpdater(uri, data);
}

function ltrim(string)
{
	return string.replace(/^\s*/, '');
}

function rtrim(string)
{
	return string.replace(/\s*$/, '');
}

function trim(string)
{
	return rtrim(ltrim(string));
}

var cleared = false;
function clearCCNum(input)
{
	if ( !cleared ) {
		input.value = '';
		cleared = true;
	}
}

function clearCart()
{
        var uri="ActivaUpdater.php";
        var data="";
        data = nh.compressData("action", "clear_cart");
        ActivaUpdater(uri, data);
}

function updateGoogle(comments)
{
    var uri="ActivaUpdater.php";
    var data="";
    data += nh.compressData("action", "update_google");
    data += nh.compressData("comments", comments);
    ActivaUpdater(uri, data);
}

function $(id) {
	return document.getElementById(id);
}

function did(id) {
	return document.getElementById(id);
}


function hideID(name) {
	if(did(name)) {
		did(name).style.display = 'none';
	}
}

function showID(name) {
	if(did(name)) {
		did(name).style.display = 'block';
	}
}

function toggleDisplayID(name) {
	if(did(name)) {
		if(did(name).style.display = 'none') {
			showID(name);
		} else {
			hideID(name);
		}
	}
}

function dbn(name, parent){
	return (parent || document).getElementsByName(name);
}

function dbt(tag, parent){
	return (parent || document).getElementsByTagName(tag);
}

function createTextNode(text){
	return document.createTextNode(text);
}

function updateCountry() {
	if ( did('country').value == '' ) {
		return;
	}
	did('state').style.display = 'none';
	did('province').style.display = 'none';
	did('other').style.display = 'none';
	if ( did('country').value == 'US' || did('country').value == '213' ) {
		did('state').style.display = '';
	} else if ( did('country').value == 'CA' || did('country').value == '38' ) {
		did('province').style.display = '';
	} else {
		did('other').style.display = '';
	}
}

function changeProductOption(id)
{
	var uri="ActivaUpdater.php";
    var data="";
    
    data += nh.compressData("action", "changeProductOption");
    data += nh.compressData("id", id);
    
    ActivaUpdater(uri, data);
}

function number_format(num, precision, decimal_sep, thousands_sep) {
	num = String(num).split(/\./);
	var decimal = num[1];
	var decsep = decimal_sep ? decimal_sep : '.';
	var thousep = thousands_sep ? thousands_sep : ',';
	num = num[0];
	if (num.length > 3) {
		num = number_format(num.substr(0, num.length-3), 0, null, thousep) + thousep + num.substr(-3);
	}
	
	if (precision) {
		while ( decimal.length < precision ) {
			decimal += '0';
		}
		decimal = decimal.substr(0, precision);
	} else {
		decimal = '';
	}
	return num + ( decimal ? decsep+decimal : '' );
}


function domcheck(elem) {
	if ( typeof(elem) == 'object' ) {
		return elem;
	}
	
	return did(elem);
}

function registerEvent(elem, event, callback, capture) {
	if ( typeof(capture) != 'undefined' ) {
		capture = true;
	}
	if ( event == 'allchange' ) {
		registerEvent(elem, 'change', callback, capture);
		registerEvent(elem, 'click', callback, capture);
		registerEvent(elem, 'keyup', callback, capture);
		return;
	}
	elem = domcheck(elem);
	
	if ( elem.addEventListener ) {
		elem.addEventListener(event, callback, capture);
	} else {
		elem.attachEvent('on'+event, callback); 
	}
}

function unregisterEvent(elem, event, callback, capture) {
	if ( typeof(capture) != 'undefined' ) {
		capture = true;
	}
	if ( event == 'allchange' ) {
		unregisterEvent(elem, 'change', callback, capture);
		unregisterEvent(elem, 'click', callback, capture);
		unregisterEvent(elem, 'keyup', callback, capture);
		return;
	}
	elem = domcheck(elem);
	
	if ( elem.removeEventListener ) {
		elem.removeEventListener(event, callback, capture);
	} else {
		elem.detachEvent('on'+event, callback); 
	}
}

//Get current document size
function getDocSize() {
  var w = 0, h = 0;
  if(typeof(window.innerWidth) == 'number'){
    //Non-IE
    w = window.innerWidth;
    h = window.innerHeight;
  }else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)){
    //IE 6+ in 'standards mode'
    w = document.documentElement.clientWidth;
    h = document.documentElement.clientHeight;
  }else if(document.body && (document.body.clientWidth || document.body.clientHeight)){
    //IE 4 compatible
    w = document.body.clientWidth;
    h = document.body.clientHeight;
  }
  return {'width':w,'height':h};
}

function getScrollXY() {
	var sX = 0, sY = 0;
	if(typeof(window.pageYOffset)=='number'){
		//Non-IE
		sY = window.pageYOffset;
		sX = window.pageXOffset;
	}else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)){
		//IE 6+ in 'standards mode'
		sY = document.documentElement.scrollTop;
		sX = document.documentElement.scrollLeft;
	}else if(document.body && (document.body.scrollLeft || document.body.scrollTop)){
		//IE 6 in 'strict mode' & some other browsers
		sY = document.body.scrollTop;
		sX = document.body.scrollLeft;
	}
	return {'x':sX,'y':sY};
}

/* domLoader - detects when the DOM is ready in the browser (typically before onload would fire).
 * Also allows registration of functions to execute once ready.
 */
var domLoader = {
	'isReady':false,
	'timer':null,
	'queue':[],
	'register':function(fn){
		var self = this;
		if(this.isReady){ return fn(); }
		else if(!this.timer){
			registerEvent(window,'load', function(){ self.checkDom(); });
			this.timer = window.setInterval(function(){ self.checkDom(); },13);
		}
		this.queue.push(fn);
	},
	'checkDom':function(){
		if(this.isReady){ return true; }
		if(document && document.getElementById && document.getElementsByTagName && document.body){
			window.clearInterval(this.timer);
			for(var i=0;i < this.queue.length;i++){
				this.queue[i]();
			}
			this.timer = null;
			this.queue = [];
			this.isReady = true;
			return true;
		}
		return false;
	}
};

/**
 * fixEvent - Returns an event object with common properties/methods normalized for easier cross browser usage.
 * @param e		object	optional;Event object to normalize
 * @return		object	Event object after normalization
 */
function fixEvent(e){
	var evnt = e || window.event;
	if(!evnt.target){ evnt.target = evnt.srcElement; }
	evnt.preventDefault = (evnt.preventDefault)? evnt.preventDefault : function(){ this.returnValue = false; };
	evnt.stopPropagation = (evnt.stopPropagation)? evnt.stopPropagation : function(){ this.cancelBubble = true; }
	return evnt;
}

function createElement(tag) {
	return document.createElement(tag);
}

function createTextNode(text){
	return document.createTextNode(text);
}

var isIE = null;
function checkIE(){
	if(isIE == null){
		isIE = (isIE || /msie/i.test(navigator.appVersion) || window.attachEvent);
	}
	return isIE;
}

function updateHeaderMenuImages() {
	var img = did('header_menu_img-39');
	if(img) {
		var origImg = img.src;
		
		if(did('header_nav_child-78')) {
			registerEvent('header_nav_child-78','mouseover',function(){
				img.src='images/dropDown_create_h.jpg';
			});
			registerEvent('header_nav_child-78','mouseout',function(){
				img.src=origImg;
			});
		}
		
		if(did('header_nav_child-40')) {
			registerEvent('header_nav_child-40','mouseover',function(){
				img.src='images/dropDown_print.jpg';
			});
			registerEvent('header_nav_child-40','mouseout',function(){
				img.src=origImg;
			});
		}
		
		if(did('header_nav_child-63')) {
			registerEvent('header_nav_child-63','mouseover',function(){
				img.src='images/design_help.jpg';
			});
			registerEvent('header_nav_child-63','mouseout',function(){
				img.src=origImg;
			});
		}
		
	}
}

registerEvent(window,'load', updateHeaderMenuImages);
