window.addEvent("domready", function() {
	var quickorder = $("frame");  // need to set proper parent for color/sizes
	var available = productdata;
	var oos = '<span style="color: #F00;">Out of stock.</span>  ';
	var partnerlink = '<br />Please visit one of our <a href="#" onclick="javascript:openP2P();" title="online partners">online partners</a>';
	
	// zoom event
	$(document.body).getElements('.zoom').each(function(el) {
		el.addEvent('click', function(event) {
			event.stop();
			zoomProductImage();
		});
	});
	
	showProductDetails();
	if(document.location.search.toLowerCase().indexOf("online=show")>=0) {
		openP2P();
	}

	
	function showProductDetails(){
		if (available.qck.length<=0) return;
		if (available.onsale=="0") oos += partnerlink;
		var f = quickorder;
		var qtybox = f.getElement("div.q").getElement("input");
		
		// colors:
		var divcolors = f.getElement("div.c");
		var clr = divcolors.getElement("img");
		while (clr) {
			clr.addEvents({
				"click" : clickColor 
			});
			var c = clr.attributes.rel.value.split("|");
			if(c[0]==available.selectedcolor){
				selectColor(clr); 
			}
			clr = clr.getNext();
		}
		
		// sizes:
		var divsizes = f.getElement("div.s");
		var szx = divsizes.getElement("span");
		var szxcnt = 0;
		var lstszx;
		while (szx) {
			szx.addEvents({
				"click" : clickSize 
			});
			var s = szx.attributes.rel.value.split("|");
			if(s[0]==available.selectedsize){
				selectSize(szx);
			}
			lstszx = szx
			szx = szx.getNext();
			szxcnt += 1;
		}
		// default size if only 1
		if (szxcnt==1) lstszx.fireEvent('click');

		// buttons:
		f.getElement("a.buy").addEvents({
				"click" : buy
		});
		f.getElement("a.save").addEvents({
				"click" : wish
		});

		// edit mode:
		if(available.qty>0){
			qtybox.value = available.qty;
		}
		
		//P2P
		if ($defined(f.getElement('a.p2p'))) f.getElement('a.p2p').addEvent('click', function(e) {
			e.stop();
			openP2P();
		});
	}

	function clickSize(){
		selectSize(this);
	}

	function selectSize(szx){
		var f = quickorder;
		var ats;
		if(szx.hasClass("selected")) return;
		hideErrorMessage();
		szx.getParent().getElements(".selected").each(function(el){
			el.removeClass("selected");
		});
		szx.addClass("selected");
		// also need inventory check for selected size and all colors
		var s = szx.attributes.rel.value.split("|");
		f.getElement("div.c").getElements("img").each(function(clx){
			if(clx.attributes.rel){
				var c = clx.attributes.rel.value.split("|");
				ats=inventoryCheck(c[0],s[0])
				if(ats!==false){
					/* SHOW Add To Cart */
//						$(document.body).getElement('a.buy').setStyle('display', 'block');
//						$(document.body).getElement('a.save').setStyle('display', 'inline');
					if(clx.hasClass("outofstock")){
						clx.removeClass("outofstock");
					}
					if(clx.hasClass("selected") && ats){
						f.getElement("div.ats").innerHTML = ats;
					}
				} else{
					if(clx.hasClass("selected")){ /* this is possible with P2P inventory*/
						/* HIDE ADD To Cart */
//						$(document.body).getElement('a.buy').setStyle('display', 'none');
//						$(document.body).getElement('a.save').setStyle('display', 'none');
//						clx.removeClass("selected");
						f.getElement("div.ats").innerHTML = oos;
					} 
					if(!clx.hasClass("outofstock")){
						clx.addClass("outofstock");
					}
				}
			}
		});
	}

	function clickColor(){
		selectColor(this);
	}

	function selectColor(clr){
		if(clr.hasClass("selected")) return;
		hideErrorMessage();
		var f = quickorder;
		var ats;
		clr.getParent().getElements(".selected").each(function(el){
			el.removeClass("selected");
		});
		clr.addClass("selected");
		// also need inventory check for selected color and all sizes
		var c = clr.attributes.rel.value.split("|");
		
		//If no sizes selected show Out Of Stock
		if ($(document.body).getElement('div.s').getElements('span.selected').length==0) {
			/* HIDE ADD To Cart */
//			$(document.body).getElement('a.buy').setStyle('display', 'none');
//			$(document.body).getElement('a.save').setStyle('display', 'none');
//			f.getElement("div.ats").innerHTML = oos;
		}
		
		f.getElement("div.s").getElements("span").each(function(szx){
			if(szx.attributes.rel){
				var s = szx.attributes.rel.value.split("|");
				ats=inventoryCheck(c[0],s[0])
				if(ats!==false){	
					/* SHOW Add To Cart */
//					$(document.body).getElement('a.buy').setStyle('display', 'inline');
//					$(document.body).getElement('a.save').setStyle('display', 'block');
					if(szx.hasClass("outofstock")){
						szx.removeClass("outofstock");
					}
					if(szx.hasClass("selected") && ats){
						f.getElement("div.ats").innerHTML = ats;
					}
				} else {
					if(szx.hasClass("selected")){ /* this is possible with P2P inventory */
						/* HIDE ADD To Cart */
//						$(document.body).getElement('a.buy').setStyle('display', 'none');
//						$(document.body).getElement('a.save').setStyle('display', 'none');
//						szx.removeClass("selected");
						f.getElement("div.ats").innerHTML = oos;
					} 
					if(!szx.hasClass("outofstock")){
						szx.addClass("outofstock");
					}
				}
			}
		});
		// change product image
		var iii = f.getElement("img.i");
		iii.rel = clr.src.replace("_c.png","_l.png");
		iii.setProperty('title', clr.getProperty('title'));
		var theimg = new Asset.image(clr.src.replace("_c.png",".png"), {
			onload: function() {
				if (!window.ie6) iii.setProperty("src",clr.src.replace("_c.png",".png"));
				if (window.ie6) iii.setStyle('filter', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + theimg.src + '", sizingMethod="scale")');
				$(iii).setStyles({
					width: this.width,
					height: this.height
				});
			}
		});
		// change product detail link - don't need to
		// change mix&match
		var mmHdr = f.getElement("div.m").getElement("h3");
		if(!mmHdr.hasClass("off")){
			mmHdr.addClass("off");
		}
		f.getElement("div.m").getElements("div").each(function(mxe){
			if(mxe.getFirst().rel.toLowerCase()==clr.title.toLowerCase()){
				if(mxe.hasClass("off")){
					mxe.removeClass("off");
					if (window.ie6) mxe.getFirst().getFirst();
				}
				if(mmHdr.hasClass("off")){
					mmHdr.removeClass("off");
				}
			} else {
				if(!mxe.hasClass("off")){
					mxe.addClass("off");
				}
			}
		});
	}

	function /* internal */ inventoryCheck(color,size){
		for(var ii=available.qck.length-1; ii>=0; ii--){
			if(available.qck[ii].colorid==color && available.qck[ii].sizeid==size && available.qck[ii].pranainv>0) return available.qck[ii].ats;
		}
		return false;
	}
	function /* internal */ hideErrorMessage(){
		quickorder.getElement("div.e").setStyle('display', 'none');
		quickorder.getElement("div.ats").innerHTML = "";
	}

	function buy(){
		var url = makeQuickOrderUrl();
		if(url){
			//TB_remove();
			//Mediabox.close();
			var request = new Ajax(url+"shoppingcart" + "&z=" + new Date().valueOf(), {
				method: "get", 
				onComplete: refreshCartDisplay
			}).request();
		}
		function refreshCartDisplay(){
			if(available.qty>0){ // edit mode:
				var cartdeleteurl = "data.aspx?p1=deletecart&p2=" + available.itemidx + "&z=" + new Date().valueOf();
				var updatecart = new Ajax(cartdeleteurl, {
					method: "get", 
					onComplete: function() {
						// redirect to checkout
						location.href="shoppingcart.aspx"
					}
				}).request();
			} else { // normal mode:
				var cartdisplayurl = "data.aspx?p1=displaycart" + "&z=" + new Date().valueOf();
				var updatecart = new Ajax(cartdisplayurl, {
					method: "get", 
					update: $("Topbanner2_CartList1_cart_container"),
					onComplete: function() {
						initCart();
						var cnt = $("cart_items").getChildren("div.left").length - 1;
						scrollCartEnd(cnt);
					}
				}).request();
			}
		}
	}

	function wish(){
		var url = makeQuickOrderUrl();
		if(url){
			var request = new Ajax(url+"wishlist" + "&z=" + new Date().valueOf(), {
				method: "get", 
				onComplete: function() {
					// redirect to savedcart.aspx - problem - adds new item but doesn't display it
					location.href="savedcart.aspx" //?z=' + new Date().valueOf();
				},
				onFailure: function() {
					//
				}
			}).request();
		}
	}

	function makeQuickOrderUrl(){
		var p = available;
		var f = quickorder;
		var e = f.getElement("div.e");
		var color = f.getElement("div.c").getElement(".selected");
		var size = f.getElement("div.s").getElement(".selected");
		var qtybox = f.getElement("div.q").getElement("input");
		var q = getQuantity();
		if(color && size && q && (q>0) && !color.hasClass("outofstock")){
			var cp = color.attributes.rel.value.split("|");
			var sp = size.attributes.rel.value.split("|");
			var qry = "data.aspx?p1=addtocart&p8=" + q;
			qry += "&p3=" + p.colorset[0].productid; // productid
			qry += "&p4=" + cp[0]; // colorid
			qry += "&p5=" + p.color; // colorattributeid
			qry += "&p6=" + sp[0]; // sizeid
			qry += "&p7=" + p.size; // sizeattributeid
			qry += "&p2=";
			return qry;
		}
		if(!color){
			e.innerHTML = " Color not selected";
			showMessage();
		}
		if(!size){
			e.innerHTML = " Size not Selected";
			quickorder.getElement("div.ats").innerHTML = '';
			showMessage();
		}
		if(!q || !(q>0)){
			e.innerHTML = " Quantity isn't a Number";
			quickorder.getElement("div.ats").innerHTML = '';
			showMessage();
		}
		if(color.hasClass("outofstock")){
			e.innerHTML = " Out of stock";
			showMessage();
		}
		function getQuantity(){
			var isnumber = /^[0-9]+$/;
			if(isnumber.test(qtybox.value.trim())){
				return qtybox.value.trim();
			}
		}
		function showMessage(){
			//e.style.visibility = "visible";
			$(e).setStyle('display','block');
		}
	}

});

function zoomProductImage(){
	var img = $("main").getElement("img.i").rel;
	var hdr = $("main").getElement("div.dsc").getElement("h1").innerHTML + ' - ' + $("main").getElement("img.i").title ;
	Mediabox.open(img,hdr,"[300 300]");
}

function openP2P() {
	Mediabox.open('#mb_p2p', 'ONLINE PARTNERS', '500 420');
}