/*
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.
*/

//this is the png fix
var fixlist = ['logo', 'invite', 'invite_close']; // add images here

	


	///////////////////////////////////////
	// 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 validateTell(form) {
	return (
				 checkSelect(form.elements["to_email"],"V","","Please enter your Friend's E-mail Address.",false) &&
				 checkEmail(form.elements["to_email"],false) &&
				 checkSelect(form.elements["to_email"],"V","joe@example.com","Please supply valid E-mail Address.",false) &&
				 checkSelect(form.elements["from_email"],"V","","Please enter Your E-mail Address.",false) &&
				 checkEmail(form.elements["from_email"],false) &&
				 checkSelect(form.elements["from_email"],"V","joe@example.com","Please supply valid E-mail Address.",false) &&
				 checkSelect(form.elements["from_name"],"V","","Please enter Your Name.",false));
}

function validateContact(form) {
	return (
				 checkSelect(form.elements["firstname"],"V","","Please enter your First Name.",false) &&
				 checkSelect(form.elements["lastname"],"V","","Please enter your Last 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) &&
				 checkSelect(form.elements["message"],"V","","Please provide us with your Message.",false));
}

function validateSubmitQuestion(form) {
	return (
				 checkSelect(form.elements["submitquestion[fullname]"],"V","","Please enter your Fullname.",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 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 validateLogin(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) &&
				 checkSelect(form.elements["password"],"V","","Please enter your Password.",false));
}

function validateNewLogin(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) &&
				 checkSelect(form.elements["password1"],"V","","Please create a Password.",false) &&
				 checkSelect(form.elements["password2"],"V","","Please confirm your Password.",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 validateBillingAddress(form)
{
	// This fixes the state / province box nature of the country form
	// 213 == United States
	// 28 == Canada
	var stateField = "billing[state]";
	if ( form.elements["billing[country]"].value != 213 && form.elements["billing[country]"].value != 38 && form.elements["billing[country]"].value != 'US' && form.elements["billing[country]"].value != 'CA' ) {
		stateField = "billing[province]";
	}
	

	return (
		checkSelect(form.elements["shipping_id"],"V","","You must select an Address.",false) &&
		checkSelect(form.elements["billing[address]"],"V","","Please enter the Billing Address.",false) &&
		checkSelect(form.elements["billing[city]"],"V","","Please enter the Billing City.",false) &&
		checkSelect(form.elements["billing[country]"],"V","","Please enter the Billing Country.",false) &&
		checkSelect(form.elements[stateField],"V","","Please enter the Billing State/Prov.",false) &&
		checkSelect(form.elements["billing[zip]"],"V","","Please enter the Billing Zip/Postal Code.",false) &&
		checkSelect(form.elements["billing[phone]"],"V","","Please enter the Billing Phone.",false)
	);


}//end validateBillingAddress

function validateBillingAddress(form) {
    var stateField = "billing[state]";
    if (form.elements['billing[country]'].value == 38 ||
        form.elements['billing[country]'].value == "CA") {
        stateField = "billing[province]";
    } else if (form.elements['billing[country]'].value != 213 &&
        form.elements['billing[country]'].value != "US") {
        stateField = "billing[other]";
    }
    return checkSelect(form.elements.shipping_id, "V", "", "You must select an Address.", false) &&
        checkSelect(form.elements['billing[address]'], "V", "", "Please enter the Billing Address.", false) &&
        checkSelect(form.elements['billing[city]'], "V", "", "Please enter the Billing City.", false) &&
        checkSelect(form.elements['billing[country]'], "V", "", "Please enter the Billing Country.", false) &&
        checkSelect(form.elements[stateField], "V", "", "Please enter the Billing State/Prov.", false) &&
        checkSelect(form.elements['billing[zip]'], "V", "", "Please enter the Billing Zip/Postal Code.", false) &&
        checkSelect(form.elements['billing[phone]'], "V", "", "Please enter the Billing Phone.", false);
}

function checkPasswords(form) {

	if ( form.elements["password1"].value != form.elements["password1"].value ) {
		alert("Your passwords does not match.  Please enter re-enter your passwords");
		return false;
	} else {
		return true;
	}

}

function validateExpressPurchase(form)
{
	if (

		checkSelect(form.elements["email_address"],"V","","Please enter your E-mail.",false) &&
		checkEmail(form.elements["email_address"],false) &&
		checkSelect(form.elements["email_address"],"V","joe@example.com","Please supply valid E-mail Address.",false) &&
		checkSelect(form.elements["billing_fullname"],"V","","Please enter the billing Full Name.",false) &&
		checkSelect(form.elements["billing_address"],"V","","Please enter the billing Address.",false) &&
		checkSelect(form.elements["billing_address"],"V","","Please enter the billing Address.",false) &&
		checkSelect(form.elements["billing_city"],"V","","Please enter the billing City.",false) &&
		checkSelect(form.elements["billing_state"],"V","","Please enter the billing State/Prov.",false) &&
		checkSelect(form.elements["billing_zip"],"V","","Please enter the billing ZIP.",false) &&
		checkSelect(form.elements["billing_phone"],"V","","Please enter the billing Phone.",false))

	{
		//All billing was ok - check shipping and return it
		return validateShippingAddress(form);

	} else {
		//something was false
		return false;
	}

}//end validateBillingAddress

function validateBillingAddress1(form)
{
	if (
		//checkSelect(form.elements["billing_fullname"],"V","","Please enter the billing First Name.",false) &&
		//checkSelect(form.elements["billing_lastname"],"V","","Please enter the billing Last Name.",false) &&
		checkSelect(form.elements["billing_fullname"],"V","","Please enter the billing Full Name.",false) &&
		checkSelect(form.elements["billing_address"],"V","","Please enter the billing Address.",false) &&
		checkSelect(form.elements["billing_city"],"V","","Please enter the billing City.",false) &&
		checkSelect(form.elements["billing_state"],"V","","Please enter the billing State/Prov.",false) &&
		checkSelect(form.elements["billing_zip"],"V","","Please enter the billing ZIP.",false) &&
		checkSelect(form.elements["billing_phone"],"V","","Please enter the billing Phone.",false)
		//checkSelect(form.elements["billing_country"],"V","","Please enter the billing Country.",false)
	) {
		//All billing was ok - check shipping and return it
		return validateShippingAddress(form);

	} else {
		//something was false
		return false;
	}

}//end validateBillingAddress

function validateBillingAddress2(form)
{
	if (
		//checkSelect(form.elements["billing_fullname"],"V","","Please enter the billing First Name.",false) &&
		//checkSelect(form.elements["billing_lastname"],"V","","Please enter the billing Last Name.",false) &&
		checkSelect(form.elements["billing_fullname"],"V","","Please enter the billing Full Name.",false) &&
		checkSelect(form.elements["billing_address"],"V","","Please enter the billing Address.",false) &&
		checkSelect(form.elements["billing_city"],"V","","Please enter the billing City.",false) &&
		checkSelect(form.elements["billing_state"],"V","","Please enter the billing State/Prov.",false) &&
		checkSelect(form.elements["billing_zip"],"V","","Please enter the billing ZIP.",false) &&
		checkSelect(form.elements["billing_phone"],"V","","Please enter the billing Phone.",false)
		//checkSelect(form.elements["billing_country"],"V","","Please enter the billing Country.",false)
	) {
		//All billing was ok - check shipping and return it
		return true;

	} else {
		//something was false
		return false;
	}

}//end validateBillingAddress

function validateShippingAddress(form)
{
	// This fixes the state / province box nature of the country form
	// 213 == United States
	// 28 == Canada
	var stateField = "ship_state";
	if ( form.elements["ship_country"].value != 213 && form.elements["ship_country"].value != 38 ) {
		stateField = "ship_province";
	}

	return (
		checkSelect(form.elements["ship_fullname"],"V","","Please enter the shipping full name.",false) &&
		checkSelect(form.elements["ship_country"],"V","","Please enter the shipping country.",false) &&
		checkSelect(form.elements["ship_phone"],"V","","Please enter the shipping Phone.",false) &&
		checkSelect(form.elements["ship_address"],"V","","Please enter the shipping Address.",false) &&
		checkSelect(form.elements["ship_city"],"V","","Please enter the shipping City.",false) &&
		checkSelect(form.elements[stateField],"V","","Please enter the shipping State/Prov.",false) &&
		checkSelect(form.elements["ship_zip"],"V","","Please enter the shipping ZIP.",false)
	);
}//end validateShippingAddress

function validateExpressPurchase(form)
{
	return (
		checkSelect(form.elements["email_address"],"V","","Please enter your email address.",false) &&
		checkSelect(form.elements["ship_fullname"],"V","","Please enter the shipping full name.",false) &&
		checkSelect(form.elements["ship_phone"],"V","","Please enter the shipping Phone.",false) &&
		checkSelect(form.elements["ship_address"],"V","","Please enter the shipping Address.",false) &&
		checkSelect(form.elements["ship_city"],"V","","Please enter the shipping City.",false) &&
		checkSelect(form.elements["ship_state"],"V","","Please enter the shipping State/Prov.",false) &&
		checkSelect(form.elements["ship_zip"],"V","","Please enter the shipping ZIP.",false)
	);
}//end validateShippingAddress

function validatePaypalForm()
{
	if (document.getElementById('billing_state').value.length == 0) {
		alert ("Please enter the billing state.");
		return false;
	} else {
		return true;
	}
}//end validateShippingAddress

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 (
		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) &&
		checkSelect(form.elements["fullname"],"V","","Please enter your full name.",false)
	) {
		return validateShipping(form);
	}

	return false;
}

function validateShipping(form)
{
	return (
		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["ship_state"],"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 Fullname.",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 checkProfile(form)
{
	var arrElements = new Array("fullname","address", "city", "state", "zip");
	var len = arrElements.length;
	var i = 0;

	for ( i=0; i<len; i++ ) {
		if ( form.elements['billing_'+arrElements[i]].value != form.elements['hidden_billing_'+arrElements[i]].value ) {
			form.elements['profilecontrol'].value = 'change';
		}
	}

	//and one by hand
	if ( form.elements['cc_type'].value != form.elements['hidden_cc_type'].value ) {
		form.elements['profilecontrol'].value = 'change';
	}

	return validateBillingAddress(form);
}


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;
}

////////////////////////////////////////////////
// disabling and enabling shipping info fields
////////////////////////////////////////////////

function toggleFields(form)
{
	var toggle = form.elements['same_as_billing'];

	var arrShipFields = new Array('ship_fullname', 'ship_address', 'ship_city', 'ship_state', 'ship_zip', 'ship_phone');
	var fieldShipCount = arrShipFields.length;

	var arrBillFields = new Array('billing_fullname', 'billing_address', 'billing_city', 'billing_state', 'billing_zip', 'billing_phone');
	var fieldBillCount = arrBillFields.length;

	var i = 0;

	if (toggle.checked == false) {
		//Already checked, unset everything
		for ( i=0; i<fieldShipCount; i++) {
			form.elements[arrShipFields[i]].value = "";
		}//for

	} else {
		//Not yet checked, copy the values from billing
		for ( i=0; i<fieldShipCount; i++) {
			form.elements[arrShipFields[i]].value = form.elements[arrBillFields[i]].value;
		}//for
	}

}//end toggleFields

function toggleSaveProfile(elem) {
	var form = elem.form;

	//valid values are insert, donotupdate, and update
	if (elem.checked == true) {
		form.elements['profilecontrol'].value = 'insert';

	} else {
		form.elements['profilecontrol'].value = 'donotupdate';

	}

	//alert(form.elements['profilecontrol'].value);

}//end toggleSaveProfile

function checkField() {
	var frm = document.search_store;

	if ( (frm.p_keyword.value == "" ) || (frm.p_keyword.value == " " ) ) {

		alert("A Keyword is required to search");
		return false;
	}
}

function checkEmailSignup() {

	var frm = document.emailSignup;

	if ( (frm.firstname.value == "" ) || (frm.firstname.value == " " ) ) {

		alert("First name is required");
		return false;
	}

	if ( (frm.lastname.value == "" ) || (frm.lastname.value == " " ) ) {
		alert("Last name is required");
		return false;
	}

	if ( (frm.email.value == "") || (frm.email.value == " ") ) {

		alert("E-mail is required");
		return false;
	}

	return true;

}
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 leavecheck(anchor) {
	if(!anchor.href) {
		anchor = anchor.parentNode;
	}
	did('dialog_leave_exit').href = anchor.href;
	showID("dialog_leave");
	return false;
}

function generateLeaveCheck() {
	var elements = document.getElementsByTagName('a');
	for(var i=0; i<elements.length; i++) {
		if(	elements[i].id.substr(0,7) != 'clipart' && 
			elements[i].id.substr(0,12) != 'categories' && 
			elements[i].id.substr(0,7) != 'clipArt' && 
			elements[i].id.substr(0,24) != 'viewAllClipArtCategories' &&
			elements[i].id.substr(0,8) != 'btn_text' &&
			elements[i].id.substr(0,10) != 'btn_photos' &&
			elements[i].id.substr(0,13) != 'btn_duplicate' &&
			elements[i].id.substr(0,10) != 'btn_moveUp' &&
			elements[i].id.substr(0,12) != 'btn_moveDown' &&
			elements[i].id.substr(0,10) != 'btn_delete' && 
			elements[i].id.substr(0,12) != 'dialog_leave' && 
			elements[i].className != 'img'
			) {
			registerEvent(elements[i], 'click', function(event) { if(!event) { event = window.event; } leavecheck(event.srcElement ? event.srcElement : this); if(event.preventDefault) { event.preventDefault(); } return false; });
		}
	}
}

function getOffsetTop(elem) {
	if ( elem.offsetParent ) {
		return elem.offsetTop + getOffsetTop(elem.offsetParent);
	} else {
		return elem.offsetTop;
	}
}

function getPageSizeWithScroll(){
	if (window.innerHeight && window.scrollMaxY) {// Firefox
		yWithScroll = window.innerHeight + window.scrollMaxY;
		xWithScroll = window.innerWidth + window.scrollMaxX;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		yWithScroll = document.body.scrollHeight;
		xWithScroll = document.body.scrollWidth;
	} else { // works in Explorer 6 Strict, Mozilla (not FF) and Safari
		yWithScroll = document.body.offsetHeight;
		xWithScroll = document.body.offsetWidth;
  	}
	arrayPageSizeWithScroll = new Array(xWithScroll,yWithScroll);
	//alert( 'The height is ' + yWithScroll + ' and the width is ' + xWithScroll );
	return arrayPageSizeWithScroll;
}

function loadPreview() {

	var caption_value = window.opener.document.getElementById("caption").value;
	var headline_obj = window.opener.document.getElementById("headline");
	var body_obj = window.opener.document.getElementById("body");
	var child_head = document.getElementById("headline");
	var child_body = document.getElementById("body");
	var child_caption = document.getElementById("img_caption");

	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;
}

// fill_span(_name, _html) fills object id _name with contents of _html after lu_unescaping
function fill_span(_name, _html) {
	var span = document.getElementById(_name);
	span.innerHTML = lu_unescape(_html);
}

//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 ( 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);
		xslDoc.load('listview/products.xsl');
	} else if ( window.ActiveXObject ) {
		xslDoc = new ActiveXObject("Microsoft.XMLDOM");
		xslDoc.async = false;
		xslDoc.validateOnParse = false;
		xslDoc.load('listview/products.xsl');
		xslLoaded = true;
	}
}

function onXMLLoad()
{
	xmlLoaded = true;
	styleLoad();
}

function onXSLLoad()
{
	xslLoaded = true;
	styleLoad();
}
var styleLoadFailed = false;
var timer;
var curr = 1;
function styleLoad()
{
	if ( xmlLoaded && xslLoaded ) {
		var processor = new XSLTProcessor();

		try {
			processor.importStylesheet(xslDoc);
		} catch(e) {
			styleLoadFailed = true;
			hideID("now_loading");
			document.body.style.cursor = 'auto';
			return;
		}
		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;
	}
}

function giftChange(checked)
{
	var giftrow = document.getElementById('giftrow');
	var gift_message = document.getElementById('gift_message');
	
	if ( checked ) {
		gift_message.disabled = false;
		giftrow.style.display = '';
	} else {
		giftrow.style.display = 'none';
		gift_message.disabled = true;
	}
}


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'));*/
	
	if(styleLoadFailed) {
		return true;
	}

	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 {
			return true;
		}
	}
}

function refreshSort(page, sort, dir, perpage)
{

	resorting_selected = true;
	try {
		refreshView(page, sort, dir, perpage);
		if ( styleLoadFailed ) {
			throw new Error();
		}
	} 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 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 changeCountry(country)
{
	if ( country == '213' || country == '38' || country == '' ) {
		document.getElementById('province_box').style.display='none';
		document.getElementById('state_box').style.display='';
	} else {
		document.getElementById('province_box').style.display='';
		document.getElementById('state_box').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 ( $('gcd_total') ) {
		$('gcd_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 toggleUseShipping(elem){
    if(elem.checked == true){
        document.getElementById('billing_address').value = document.getElementById('hold_address').value;
        document.getElementById('billing_city').value = document.getElementById('hold_city').value;
        document.getElementById('billing_zip').value = document.getElementById('hold_zip').value;
        document.getElementById('billing_phone').value = document.getElementById('hold_phone').value;
        for(var i =0; i < document.getElementById('billing_country').length; ++i){
            if(document.getElementById('billing_country').options[i].value == document.getElementById('hold_country').value){
                document.getElementById('billing_country').selectedIndex = i;
            }
        }
        for(var i =0; i < document.getElementById('billing_state').length; ++i){
            if(document.getElementById('billing_state').options[i].value == document.getElementById('hold_state').value){
                document.getElementById('billing_state').selectedIndex = i;
            }
        }

    } else {
        document.getElementById('billing_address').value = '';
        document.getElementById('billing_city').value = '';
        document.getElementById('billing_zip').value = '';
        document.getElementById('billing_phone').value = '';
        document.getElementById('billing_country').selectedIndex = 0;
        document.getElementById('billing_state').selectedIndex = 0;
    }
}

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);
}

var loaded = new Array();
loaded[loaded.length] = 'user';

function loadClipart(cat_id) {
		
	hideID('clip_art_categories');
	showID('images');
	did('viewAllClipArtCategories').className = '';
	
	clipartCurrentCategory = clipartCategoriesOrderRev[cat_id];
	var categories = did('categories_title_container');
	for ( var i=0; i<categories.childNodes.length; i++ ) {
		if ( categories.childNodes[i].nodeName == 'SPAN' ) {
			categories.childNodes[i].style.display = 'none';
		}
	}
	showID('categories_'+cat_id+'_title');
	
	var bypass = false;
	
	for ( var i=0; i<loaded.length; i++ ) {
		if ( loaded[i] == cat_id ) {
			bypass = true;
		}
	}
	
	var images = did('images');
	for ( var i=0; i<images.childNodes.length; i++ ) {
		if ( images.childNodes[i].nodeName == 'DIV' ) {
			images.childNodes[i].style.display = 'none';
		}
	}
	
	if ( !bypass ) {
		var uri="ActivaUpdater.php";
	    var data="";
	    
	    data += nh.compressData("action", "loadClipart");
	    data += nh.compressData("cat_id", cat_id);
	    
	    ActivaUpdater(uri, data);
	    
	    loaded[loaded.length] = cat_id;
	    did('images_'+cat_id).style.display = '';
	} else {
		did('images_'+cat_id).style.display = '';
	}
	
    return false;
}

function displayClipArtCategories() {
	showID('clip_art_categories');
	hideID('images');
	did('viewAllClipArtCategories').className = 'on';
	clipartCurrentCategory = -1;
	var categories = did('categories_title_container');
	for ( var i=0; i<categories.childNodes.length; i++ ) {
		if ( categories.childNodes[i].nodeName == 'SPAN' ) {
			categories.childNodes[i].style.display = 'none';
		}
	}
	showID('categories_library_title');
	return false;
}

function clipArtCategoriesPrevious() {
	
	if((clipartCurrentCategory == 1 && userImageCount <= 0) || clipartCurrentCategory == 0) {
		return displayClipArtCategories();
	}	
	
	if(clipartCurrentCategory > 0) {
		return loadClipart(clipartCategoriesOrder[parseInt(clipartCurrentCategory)-1]);
	} else {
		return loadClipart(clipartCategoriesOrder[clipartCategoriesOrder.length - 1]);
	}
	return false;
}

function clipArtCategoriesNext() {
		
	if(clipartCurrentCategory == -1 && userImageCount > 0) {
		return loadClipart(clipartCategoriesOrder[0]);
	} else if(clipartCurrentCategory == -1) {
		return loadClipart(clipartCategoriesOrder[1]);
	}
	
	if(clipartCurrentCategory == clipartCategoriesOrder.length-1) {
		return displayClipArtCategories();
	}
	
	if(clipartCurrentCategory < clipartCategoriesOrder.length - 1) {
		return loadClipart(clipartCategoriesOrder[parseInt(clipartCurrentCategory)+1]);
	} else {
		return loadClipart(clipartCategoriesOrder[0]);
	}
	
	return false;
}

function deleteUserImage(id) {
	
	if(confirm('Are you sure you want to delete this image?')) {
		var uri="ActivaUpdater.php";
	    var data="";
	    
	    hideID('userImage'+id);
	    userImageCount--;
	    
	   	data += nh.compressData("action", "deleteUserImage");
	   	data += nh.compressData("id", id);
	   	ActivaUpdater(uri, data);
	}
}

function setShowMouseOver(event_id,action_id) {
	registerEvent(did(event_id), 'mouseover', function(e) { showID(action_id); });
}
function setHideMouseOut(event_id,action_id) {
	registerEvent(did(event_id), 'mouseout', function(e) { hideID(action_id); });
}

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, capture); 
	}
}

function domcheck(elem) {
	if ( typeof(elem) == 'object' ) {
		return elem;
	}
	
	return did(elem);
}