/* staying_in_site = false;

Activa.DOM.ready(function() {
	var links = dbt('a');
	for ( var i = 0; i < links.length; i++ ) {
		Activa.registerEvent(links[i], "click", function() { staying_in_site = true; });
	}
});

Activa.registerEvent(window, "unload", function() {
	if ( staying_in_site ) {
		return;
	}
	new Activa.NewWindow("http://svnserver/npelton/s2/404", "successories", 500, 300, "no");
}); */

function setupFocusBlur(field, text) {
	if ( Activa.DOM.check(field).value == '' || Activa.DOM.check(field).value == text ) {
		Activa.DOM.check(field).value = text;
		Activa.DOM.removeClass(Activa.DOM.check(field), 'typed');
	} else {
		Activa.DOM.addClass(Activa.DOM.check(field), 'typed');
	}
	Activa.registerEvent(Activa.DOM.check(field), 'focus', function() { fieldFocus(field, text); });
	Activa.registerEvent(Activa.DOM.check(field), 'blur', function() { fieldBlur(field, text); });
	Activa.registerEvent(Activa.DOM.check(field).form, 'submit', function() { fieldSubmit(field, text); });
}

function fieldFocus(field, text) {
	if ( Activa.DOM.check(field).value == text ) { 
		Activa.DOM.check(field).value = '';
	} 
	Activa.DOM.addClass(Activa.DOM.check(field), 'typed');
}

function fieldBlur(field, text) {
	if ( Activa.DOM.check(field).value == '' || Activa.DOM.check(field).value == text ) { 
		Activa.DOM.check(field).value = text; 
		Activa.DOM.removeClass(Activa.DOM.check(field), 'typed'); 
	} else { 
		Activa.DOM.addClass(Activa.DOM.check(field), 'typed'); 
	}
}

function fieldSubmit(field, text) {
	if ( Activa.DOM.check(field).value == text ) { 
		Activa.DOM.check(field).value = '' 
	}
}

function enterField(field, value) {
	if ( field.value == value ) {
		field.value = '';
	}
	field.style.color = "#000000";
}

function leaveField(field, value) {
	if ( field.value == '' ) {
		field.value = value;
		field.style.color = "#999999";
	}
}

function hover(obj, state) {
	if ( !obj ) {
		return;
	}
	state = Boolean(state);
	if ( state && !Activa.DOM.hasClass(obj, 'hover') ) {
		Activa.DOM.addClass(obj, 'hover');
	} else if ( !state ) {
		Activa.DOM.removeClass(obj, 'hover');
	}
}

function updateShipping(parcel_index, url) {
	if ( did("service_" + parcel_index) ) {
		url += "/" + did("service_" + parcel_index).value;
	}
	if ( did("carrier_" + parcel_index) ) {
		url += "/" + did("carrier_" + parcel_index).value;
	}
	new Activa.rpc(url, {onComplete: updateCheckoutModifiers});
}

function doUpdateShipping(obj) {	
	if ( obj.shipping_method == 'order' ) {
		did("shipping_total").innerHTML = "$" + obj.shipping;
		did("grand_total").innerHTML = "$" + obj.grand_total;
		Activa.DOM.showID("grand_total_row");
	}
}

function numberFormat(num) {
	num = parseFloat(num).toFixed(2);
	var p = num.split('.');
	var p1 = p[0];
	var p2 = p[1];
	var rg = /(\d+)(\d{3})/;
	while ( rg.test(p1) ) {
		p1 = p1.replace(rg, '$1'+','+'$2');
	}
	return p1+'.'+p2;
}

var checkout;

function updateCheckoutModifiers(obj) {
	
	if ( checkout_shipping_selector ) {
		checkout_shipping_selector.carriers = null;
		checkout_shipping_selector.services = null;
	}
	
	checkout = obj.checkout;
					
	var table = did("checkout_table");
	var tbody = table.tBodies[0];
	
	while ( tbody.childNodes.length > 0 ) {
		tbody.removeChild(tbody.firstChild);
	}
	
	var parcels = checkout.parcels;
	
	var zebra = 0;
	
	for ( var parcel = 0; parcel < parcels.length; parcel++ ) {
		var line_items = parcels[parcel].cart.line_items; 
		for ( var line_item = 0; line_item < line_items.length; line_item++ ) {
			
			var item = line_items[line_item].item;
			var modifiers = line_items[line_item].modifiers;
			
			var tr = document.createElement("tr");
			tbody.appendChild(tr);
			tr.className = "zebra_" + (zebra++ % 2);
			
			var td = document.createElement("td");
			td.align = "center";
			td.rowSpan = 1 + modifiers.length;
			tr.appendChild(td);
			
			if ( item.image ) {				
				var img = document.createElement("img");
				img.src = item.image.src;
				img.width = item.image.width;
				img.height = item.image.height;
				if ( item.url ) {
					var a = document.createElement("a");
					a.href = item.url;
					a.appendChild(img);
					td.appendChild(a);
				} else {
					td.appendChild(img);
				}
			}
				
			var td = document.createElement("td");
			td.className = "item_description";
			tr.appendChild(td);
			
			if ( item.extra ) {
				td.innerHTML = "<b>" + line_items[line_item].title + "</b>" + item.extra;
			} else {
				var b = document.createElement("b");
				b.appendChild(document.createTextNode(line_items[line_item].title));
				td.appendChild(b);
			}
			
			var td = document.createElement("td");
			td.className = "center";
			tr.appendChild(td);
			
			td.appendChild(document.createTextNode(item.sku ? item.sku : ""));
			
			var td = document.createElement("td");
			td.className = "center";
			tr.appendChild(td);
			
			td.appendChild(document.createTextNode(line_items[line_item].qty));
			
			var td = document.createElement("td");
			td.className = "center";
			tr.appendChild(td);
			
			if ( line_items[line_item].is_child ) {
				td.appendChild(document.createTextNode("Included"));
			} else if ( item.on_sale ) {
				var strike = document.createElement("strike");
				strike.appendChild(document.createTextNode("$" + numberFormat(item.price)));
				td.appendChild(strike);
				td.appendChild(document.createElement("br"));
				td.appendChild(document.createTextNode("$" + numberFormat(item.sale_price)));
			} else if ( item.price != line_items[line_item].unit_price && item.price > 0 ) {
				var strike = document.createElement("strike");
				strike.appendChild(document.createTextNode("$" + numberFormat(item.price)));
				td.appendChild(strike);
				td.appendChild(document.createElement("br"));
				td.appendChild(document.createTextNode("$" + numberFormat(line_items[line_item].unit_price)));
			} else {
				td.appendChild(document.createTextNode("$" + numberFormat(line_items[line_item].unit_price)));
			}
			
			var td = document.createElement("td");
			td.className = "right total_price";
			tr.appendChild(td);
			
			if ( line_items[line_item].is_child ) {
				td.appendChild(document.createTextNode(" "));
			} else {
				td.appendChild(document.createTextNode("$" + numberFormat(line_items[line_item].price)));
			}
			
			for ( var modifier = 0; modifier < modifiers.length; modifier++ ) {
				
				var tr = document.createElement("tr");
				tr.className = "additional_fees";
				tbody.appendChild(tr);
				
				var td = document.createElement("td");
				tr.appendChild(td);

				if ( modifiers[modifier].discount ) {
					var strong = document.createElement("strong");
					strong.appendChild(document.createTextNode("Discount: "));
					td.appendChild(strong);
				}
				
				td.appendChild(document.createTextNode(modifiers[modifier].name));

				var td = document.createElement("td");
				tr.appendChild(td);
				td.innerHTML = "&nbsp;";

				var td = document.createElement("td");
				tr.appendChild(td);
				td.innerHTML = "&nbsp;";
				
				var td = document.createElement("td");
				if ( modifiers[modifier].total < 0 ) {
					td.className = "center red";
				} else {
					td.className = "center green";
				}
				tr.appendChild(td);
				
				if ( modifiers[modifier].setupfee ) {
					td.innerHTML = "&nsbp;";
				} else {
					var amount = modifiers[modifier].total / line_items[line_item].qty;
					td.appendChild(document.createTextNode((amount < 0 ? '-' : '') + "$" + numberFormat(Math.abs(amount))));
				}
				
				var td = document.createElement("td");
				if ( modifiers[modifier].total < 0 ) {
					td.className = "right red";
				} else {
					td.className = "right green";
				}
				tr.appendChild(td);

				td.appendChild(document.createTextNode((modifiers[modifier].total < 0 ? '-' : '') + "$" + numberFormat(Math.abs(modifiers[modifier].total))));
				
			}
			
		}
		
		var tr = document.createElement("tr");
		tr.className = "sub_total";
		tbody.appendChild(tr);
		
		var td = document.createElement("td");
		td.colSpan = "5";
		td.className = "right";
		tr.appendChild(td);
		td.appendChild(document.createTextNode("CART TOTAL"));
		
		var td = document.createElement("td");
		td.className = "right";
		tr.appendChild(td);
		td.appendChild(document.createTextNode("$" + numberFormat(parcels[parcel].cart.subtotal)));
				
		var modifiers = parcels[parcel].cart.modifiers;
		
		for ( var modifier = 0; modifier < modifiers.length; modifier++ ) {
			
			var loading = null;
			
			var tr = document.createElement("tr");
			tr.className = "sub_total2";
			tbody.appendChild(tr);
			
			var td = document.createElement("td");
			tr.appendChild(td);
			td.colSpan = "5";
			td.className = "right";
			
			if ( modifiers[modifier].discount ) {
				var strong = document.createElement("strong");
				strong.appendChild(document.createTextNode("Discount: "));
				td.appendChild(strong);
			}
			
			td.appendChild(document.createTextNode(modifiers[modifier].name));
			
			if ( modifiers[modifier].shipping ) {
				
				td.appendChild(document.createTextNode(" "));	
				
				if ( modifiers[modifier].carriers && modifiers[modifier].carriers.length == 1 ) {
					for ( var i = 0; i < modifiers[modifier].carriers.length; i++ ) {
						td.appendChild(document.createTextNode(modifiers[modifier].carriers[i].text));
						break;
					}
				} else if ( modifiers[modifier].carriers && modifiers[modifier].carriers.length > 1 ) {
					var select = document.createElement("select");
					td.appendChild(select);
					for ( var i = 0; i < modifiers[modifier].carriers.length; i++ ) {
						var option = document.createElement("option");
						option.text = modifiers[modifier].carriers[i].text;
						option.value = modifiers[modifier].carriers[i].value;
						if ( option.value == modifiers[modifier].carrier ) {
							option.selected = true;
						}
						select.options[select.options.length] = option;
					}
					
					checkout_shipping_selector.carriers = select;
					Activa.registerEvent(select, "change", Activa.createDelegate(checkout_shipping_selector, "updateShipping"));
				}
				
				td.appendChild(document.createTextNode(" "));

				if ( modifiers[modifier].services && modifiers[modifier].services.length == 1 ) {
					for ( var i = 0; i < modifiers[modifier].services.length; i++ ) {
						td.appendChild(document.createTextNode(modifiers[modifier].services[i].text));
						break;
					}
				} else if ( modifiers[modifier].services && modifiers[modifier].services.length > 1 ) {
					var select = document.createElement("select");
					td.appendChild(select);
					for ( var i = 0; i < modifiers[modifier].services.length; i++ ) {
						var option = document.createElement("option");
						option.text = modifiers[modifier].services[i].text;
						option.value = modifiers[modifier].services[i].value;
						if ( option.value == modifiers[modifier].service ) {
							option.selected = true;
						}
						select.options[select.options.length] = option;
					}
					
					checkout_shipping_selector.services = select;
					Activa.registerEvent(select, "change", Activa.createDelegate(checkout_shipping_selector, "updateShipping"));
				}
				
			}
			
			var td = document.createElement("td");
			if ( modifiers[modifier].total < 0 ) {
				td.className = "price red right";
			} else {
				td.className = "price green right";
			}
			tr.appendChild(td);

			td.appendChild(document.createTextNode((modifiers[modifier].total < 0 ? '-' : '') + "$" + numberFormat(Math.abs(modifiers[modifier].total))));
			

			if ( modifiers[modifier].shipping ) {
				checkout_shipping_selector.price_td = td;
			}
		}
	}
	
	var modifiers = checkout.modifiers;

	for ( var modifier = 0; modifier < modifiers.length; modifier++ ) {
		
		var tr = document.createElement("tr");
		tr.className = "sub_total2";
		tbody.appendChild(tr);
		
		var td = document.createElement("td");
		tr.appendChild(td);
		td.colSpan = "5";
		td.className = "right";
		
		if ( modifiers[modifier].discount ) {
			var strong = document.createElement("strong");
			strong.appendChild(document.createTextNode("Discount: "));
			td.appendChild(strong);
		}
		
		td.appendChild(document.createTextNode(modifiers[modifier].name));
		
		var td = document.createElement("td");
		if ( modifiers[modifier].total < 0 ) {
			td.className = "price red right";
		} else {
			td.className = "price green right";
		}
		tr.appendChild(td);

		td.appendChild(document.createTextNode((modifiers[modifier].total < 0 ? '-' : '') + "$" + numberFormat(Math.abs(modifiers[modifier].total))));
		
	}
	
	var tr = document.createElement("tr");
	tr.className = "grand_total_row";
	tbody.appendChild(tr);
	
	var td = document.createElement("td");
	tr.appendChild(td);
	td.colSpan = "4";
	td.width = "350px";
	td.style.border = "none";
	
	var td = document.createElement("td");
	tr.appendChild(td);
	td.className = "right upper bold";
	td.appendChild(document.createTextNode("Grand Total"));
	
	var td = document.createElement("td");
	tr.appendChild(td);
	td.className = "right bold";
	td.appendChild(document.createTextNode("$" + numberFormat(checkout.total)));

	if ( (checkout.payment_method == 'creditcard' || checkout.payment_method == 'paypal' || checkout.payment_method == 'purchase_order') || checkout.total > 0 ) {
		if ( checkout.payment_method == 'creditcard' ) {
			Activa.DOM.showID("checkout_form");
			Activa.DOM.hideID('paypal_form');
			Activa.DOM.hideID('checkout_pay_by_po_form');
		} else if ( checkout.payment_method == 'purchase_order' ) {
			Activa.DOM.hideID("checkout_form");
			Activa.DOM.hideID('paypal_form');
			Activa.DOM.showID('checkout_pay_by_po_form');
		} else if ( checkout.payment_method == 'paypal' ) {
			Activa.DOM.hideID("checkout_form");
			Activa.DOM.showID('paypal_form');
			Activa.DOM.hideID('checkout_pay_by_po_form');
		}
		Activa.DOM.hideID("checkout_promocode_form");
		Activa.DOM.hideID("checkout_gift_certificate_form");
		Activa.DOM.showID("payment_information");
		//processPaymentType();
	} else {
		Activa.DOM.hideID("checkout_form");
		Activa.DOM.hideID('paypal_form');
		Activa.DOM.hideID("checkout_promocode_form");
		Activa.DOM.hideID("checkout_gift_certificate_form");
		Activa.DOM.hideID("payment_information");
		Activa.DOM.hideID("checkout_pay_by_po_form");
		if ( checkout.payment_method == 'promocode' ) {
			Activa.DOM.showID("checkout_promocode_form");
		} else if ( checkout.payment_method == 'gift_certificate' ) {
			Activa.DOM.showID("checkout_gift_certificate_form");
		}
	}
		
	if ( obj.promo_error ) {
		did('promo_code_error').innerHTML = obj.promo_error;
		Activa.DOM.showID('promo_code_error');
	} else {
		did('promo_code_error').innerHTML = "";
		Activa.DOM.hideID('promo_code_error');
	}
	
	if ( obj.giftcert_error ) {
		did('giftcert_code_error').innerHTML = obj.giftcert_error;
		Activa.DOM.showID('giftcert_code_error');
	} else {
		did("giftcert_code_error").innerHTML = "";
		Activa.DOM.hideID('giftcert_code_error');
	}

	Activa.DOM.hideID("promo_code_loading");
	Activa.DOM.hideID("giftcert_code_loading");
	
}

var CountryDropdown = new Activa.Class({
	dropdown: null,
	state: null,
	province: null,
	other: null,   
	init: function init(dropdown, state, province, other) {
		this.dropdown = dropdown;
		this.state = state;
		this.province = province;
		this.other = other;
		Activa.DOM.ready(Activa.createDelegate(this, "load"));
	},
	load: function load() {
		this.dropdown = Activa.DOM.check(this.dropdown);
		this.state = Activa.DOM.check(this.state);
		this.province = Activa.DOM.check(this.province);
		this.other = Activa.DOM.check(this.other);
		
		if ( this.dropdown ) {
			Activa.registerEvent(this.dropdown, 'allchange', Activa.createDelegate(this, "change"));
			this.change();
		}
	},
	change: function change() {
		if ( this.dropdown.value == 'US' || this.dropdown.value == '' ) {
			Activa.DOM.showID(this.state);
			Activa.DOM.hideID(this.province);
			Activa.DOM.hideID(this.other);
		} else if ( this.dropdown.value == 'CA' ) {
			Activa.DOM.hideID(this.state);
			Activa.DOM.showID(this.province);
			Activa.DOM.hideID(this.other);
		} else {
			Activa.DOM.hideID(this.state);
			Activa.DOM.hideID(this.province);
			Activa.DOM.showID(this.other);
		}
	}
});

var MainMenuItem = new Activa.Class({
	delay: 100,
	item: null,
	target: null,
	timer: null,   
	submenu: "",
	loading: null,
	iframe: null,
	init: function init(item, target, submenu, delay) {
		this.item = Activa.DOM.check(item);
		this.target = Activa.DOM.check(target);
		this.submenu = submenu;
		this.delay = delay;
		Activa.registerEvent(item, "mouseout", Activa.createDelegate(this, "startCloseTimer"));
	},
	startOpenTimer: function startOpenTimer() {
		this.cancel();
		if ( MainMenuItem.current ) {
			this.open();
		} else {
			this.timer = setTimeout(Activa.createDelegate(this, "open"), this.delay);
		}
	},
	startCloseTimer: function startCloseTimer() {
		this.cancel();
		this.timer = setTimeout(Activa.createDelegate(this, "close"), this.delay);
	},
	open: function openMenu() {
		this.cancel();
		if ( !this.iframe ) {
			for ( var i = 0; i < this.target.childNodes.length; i++ ) {
				if ( this.target.childNodes[i].nodeName == "DIV" ) {
					
					this.loading = document.createElement("div");
					this.loading.className = "CatLoading " + this.submenu;
					this.target.childNodes[i].appendChild(this.loading);
					
					this.iframe = document.createElement("iframe");
					this.iframe.className = "submenu-" + this.submenu;
					this.iframe.width = "100%";
					this.iframe.height = "100%";
					this.iframe.frameBorder = "no";
					this.iframe.scrolling = "no";
					this.iframe.style.display = "none";
					Activa.registerEvent(this.iframe, "load", Activa.createDelegate(this, "onLoad"));
					this.target.childNodes[i].appendChild(this.iframe);
					
					var base = "https://www.successories.com/";
					if ( dbt('base').length > 0 ) {
						base = dbt('base')[0].href;
					}
					
					this.iframe.src = base + "submenu/" + this.submenu + ('https:' == document.location.protocol ? "?ssl3" : "");
					
					break;
				}
			}
		}
		MainMenuItem.setCurrent(this);
		this.target.style.display = "inline";
	},
	cancel: function cancel() {
		if ( this.timer ) {
			clearTimeout(this.timer);
		}
		this.timer = 0;
	},
	close: function close() {
		this.cancel();
		Activa.DOM.hideID(this.target);
		MainMenuItem.clearCurrent();
	},
	onLoad: function onLoad() {
		Activa.DOM.hideID(this.loading);
		Activa.DOM.showID(this.iframe);
	}
});

MainMenuItem.statics({
	current: null,
	setCurrent: function setCurrent(item) {
		var current = MainMenuItem.current;
		if ( MainMenuItem.current && MainMenuItem.current != item ) {
			MainMenuItem.current.close();
		}
		MainMenuItem.current = item;
	},
	clearCurrent: function clearCurrent() {
		MainMenuItem.current = null;
	}
});

var main_menu_items = {};

function openMainMenu(e, item, target, submenu, delay, no_iframe) {
	
	e = Activa.fixEvent(e);
	
	e.preventDefault();
	e.stopPropagation();

	if ( !item.id ) {
		item.id = "_" + item.nodeName + "_" + Math.floor(Math.random() * 100000000);
	}
	
	if ( !main_menu_items[item.id] ) {
		main_menu_items[item.id] = new MainMenuItem(item, target, submenu, delay);
		if ( no_iframe ) {
			main_menu_items[item.id].iframe = true;
			main_menu_items[item.id].delay = 5;
		}
	}

	if ( delay == 0 ) {
		main_menu_items[item.id].open();
	} else {
		main_menu_items[item.id].startOpenTimer();
	}
}

var ImageRotator = new Activa.Class({
	container: null,
	images: [],
	current: 0,
	delay: 2000,
	init: function init(container, delay) {
		this.container = container;
		this.delay = delay * 1000;
		Activa.DOM.ready(Activa.createDelegate(this, "load"));
	},
	load: function load() {
		this.container = Activa.DOM.check(this.container);
		
		for ( var i = 0; i < this.container.childNodes.length; i++ ) {
			var image = this.container.childNodes[i];
			if ( image.nodeName == "IMG" ) {
				this.images[this.images.length] = image;
			}
		}
		
		Activa.DOM.showID(this.images[this.current]);
		setTimeout(Activa.createDelegate(this, "rotate"), this.delay);
	},
	rotate: function rotate() {
		Activa.DOM.hideID(this.images[this.current]);
		this.current++;
		this.current = this.current % this.images.length;
		Activa.DOM.showID(this.images[this.current]);
		setTimeout(Activa.createDelegate(this, "rotate"), this.delay);
	}
});


var NewCustomerPopUp = new Activa.Class({
	container: null,
	timer: null,
	is_mouse_over: false,
	is_focused: false,
	init: function init(container) {
		this.container = container;
		Activa.DOM.ready(Activa.createDelegate(this, "load"));
	},
	load: function load() {
		this.container = Activa.DOM.check(this.container);
		Activa.registerEvent(this.container, "mouseover", Activa.createDelegate(this, "popupMouseOver"));
		Activa.registerEvent(this.container, "mouseout", Activa.createDelegate(this, "popupMouseOut"));
		Activa.DOM.showID(this.container);
		var fields = dbt("input", this.container);
		for ( var i = 0; i < fields.length; i++ ) {
			if ( fields[i].type == "text" ) {
				Activa.registerEvent(fields[i], "focus", Activa.createDelegate(this, "fieldFocus"));
				Activa.registerEvent(fields[i], "blur", Activa.createDelegate(this, "fieldBlur"));
			}
		}
		this.startTimer();
	},
	startTimer: function startTimer() {
		if ( !this.is_focused && !this.is_mouse_over ) {
			this.timer = setTimeout(Activa.createDelegate(this, "hidePopup"), 30 * 1000);
		}
	},
	popupMouseOver: function popupMouseOver() {
		clearTimeout(this.timer);
		this.timer = null;
		this.is_mouse_over = true;
	},
	popupMouseOut: function popupMouseOut() {
		this.is_mouse_over = false;
		this.startTimer();
	},
	fieldFocus: function fieldFocus() {
		clearTimeout(this.timer);
		this.timer = null;
		this.is_focused = true;
	},
	fieldBlur: function fieldBlur() {
		this.is_focused = false;
		this.startTimer();
	},
	hidePopup: function hidePopup() {
		Activa.DOM.hideID(this.container);
	}
});
