var listVisible = "cat-list";

function togglelist(lid) {
	if (listVisible == lid) {
		$(listVisible).style.display = "none";
		listVisible = false;
		return;
	}
	if (listVisible)
		$(listVisible).style.display = "none";
	$(lid).style.display = "block";
	listVisible = lid;
}

function switchoffer(offer_id) {
	if (shopPage == "shop")
		$("wait").style.display = "block";
	// HANDLE GOOGLE ANALYTICS 
	try {
		var item = document.getElementById("ofr-li-" + offer_id);
		var action = 'switch';
		if (item) {
			if (item.className == 'on') action = 'off';
			else action = 'on';
		}
		pageTracker._trackEvent('item', action, offer_id);
	} catch (err) { }
	new Ajax.Request("?ajax=1", {
		method: "post",
		parameters: {
			callback: "ShopViewer::js_switchoffer", 
			oid: offer_id
		},
		onSuccess: function(transport) {
			$("render-shop").src = transport.responseText;
			if (shopPage == "shop")
				$("wait").style.display = "none";
			updateoutfit();
		}
	});
	return false;
}

function select_shop(value, name) {
	_select_cat('__NONE', name);
	_select_shop(value, name);
	_select_brand('__NONE', name);
	select_type(value, 'shop', name);
}

function select_brand(value, name) {
	_select_cat('__NONE', name);
	_select_shop('__NONE', name);
	_select_brand(value, name);
	select_type(value, 'brand', name);
}

function select_cat(value, name) {
	_select_cat(value, name);
	_select_shop('__NONE', name);
	_select_brand('__NONE', name);
	select_type(value, 'cat', name);
}

function select_bg(value, name) {
	_select_bg(value, name);
	new Ajax.Request("?ajax=1", {
		method: "post",
		parameters: { callback: "OfferWindow::js_select_bg", background: value },
		onSuccess: function(transport) {
			$("render-shop").src = transport.responseText;
		}
	});
}

function _select_bg(value, name) {
	var subs = $$("#bg-list li");
	for (var i = 0; i < subs.length; i++) {
		subs[i].style.color = "#000";
		subs[i].style.textDecoration = "none";
		subs[i].style.fontWeight = "normal";
	}
	if (value != "__NONE") {
		$("bg-" + value).style.color = "#000";	
		$("bg-" + value).style.fontWeight = "bold";
		$("bg-" + value).style.textDecoration = "none";
	}
}

function _select_shop(value, name) {
	var subs = $$("#shop-list li");
	for (var i = 0; i < subs.length; i++) {
		subs[i].style.color = "#000";
		subs[i].style.textDecoration = "none";
		subs[i].style.fontWeight = "normal";
	}
	if (value != "__NONE") {
		$("shop-" + value).style.color = "#000";	
		$("shop-" + value).style.fontWeight = "bold";
		$("shop-" + value).style.textDecoration = "none";
	}
}

function _select_brand(value, name) {
	var subs = $$("#brand-list li");
	for (var i = 0; i < subs.length; i++) {
		subs[i].style.color = "#000";
		subs[i].style.textDecoration = "none";
		subs[i].style.fontWeight = "normal";
	}
	if (value != "__NONE") {
		$("brand-" + value).style.color = "#000";	
		$("brand-" + value).style.fontWeight = "bold";
		$("brand-" + value).style.textDecoration = "none";
	}
}

function _select_cat(value, name) {
	var parts = value.split("-");
	var subs = $$("#cat-list li");
	for (var i = 0; i < subs.length; i++) {
		subs[i].style.color = "#000";
		subs[i].style.textDecoration = "none";
		subs[i].style.fontWeight = "normal";
	}
	if (value != "__NONE") {
		$("cat-" + value).style.color = "#000";	
		$("cat-" + value).style.fontWeight = "bold";
		$("cat-" + value).style.textDecoration = "none";
	}
	if (parts.length != 2 || parts[1] == "0") {
		subs = $$("#cat-list li.sub");
		for (var i = 0; i < subs.length; i++) {
			subs[i].style.display = "none";
		}
	}
	if (parts.length == 2 && parts[1] == "0") {
		subs = $$("#cat-list li.sub" + parts[0]);
		for (var i = 0; i < subs.length; i++) {
			subs[i].style.display = "block";
		}
	}
}

function select_type(param, type, name) {
	var cat = "_";
	var brand = "_";
	var shop = "_";
	if (type == "cat") {
		if (param == "cat-_")
			cat = "_";
		else
			cat = param;
	}
	if (type == 'brand')
		brand = param;
	if (type == 'shop')
		shop = param;
	pager_ext(1, cat, name, brand, name, shop, name);
}

function pager_ext(page_nr, cat, catName, brand, brandName, shop, shopName) {
	new Ajax.Request("?ajax=1", {
		method: "post",
		parameters: {
			callback: "OfferWindow::js_pager",
			page: page_nr,
			cat: cat,
			catName: catName,
			brand: brand,
			brandName: brandName,
			retailer: shop,
			retailerName: shopName
		},
		onSuccess: handlepager
	});
}

function undo() {
	new Ajax.Request("?ajax=1", {
		method: "post",
		parameters: { callback: "ShopViewer::js_undo" },
		onSuccess: function(transport) {
			$("render-shop").src = transport.responseText;
			updateoutfit();
		}
	});
}

function togglezoom() {
	new Ajax.Request("?ajax=1", {
		method: "post",
		parameters: { callback: "ShopViewer::js_zoom" },
		onSuccess: function(transport) {
			$("render-shop").src = transport.responseText;
		}
	});
}

function clearoutfit() {
	new Ajax.Request("?ajax=1", {
		method: "post",
		parameters: { callback: "ShopViewer::js_clear" },
		onSuccess: function(transport) {
			if (shopPage == 'shop') {
				$("render-shop").src = transport.responseText;
				updateoutfit();
			}
			else {
				window.location = "?page=shop";
			}
		}
	});
}

function handlepager(transport) {
	var msg = transport.responseText;
	var tilde = msg.indexOf("~"); 
	if (tilde != -1) {
		$("offers").update(msg.substring(tilde + 1));
		$("pages").update(msg.substring(0, tilde));
	}
}

function pager(page_nr) {
	new Ajax.Request("?ajax=1", {
		method: "post",
		parameters: {
			callback: "OfferWindow::js_pager",
			page: page_nr
		},
		onSuccess: handlepager
	});
}

function removeoutfitoffer(oid) {
	switchoffer(oid);
	$("ol-" + oid).fade({
		duration: 1.0,
		afterFinish: function() {
			if ($$('#outfit li .price').length == 0)
				window.location = "?page=shop";
			else
				computetotal();
		}
	});
}

function showoutfit() {
	new Ajax.Request("?ajax=1", {
		parameters: 'callback=OutfitWindow::js_showoutfit',
		onSuccess: function(transport) {
			var parts = transport.responseText.split("~");
			if (parts.length > 1) {
				var offers = parts[0].split(",");
				for (var i = 0; i < offers.length; i++) {
					offers[i] = "ofr-li-" + offers[i];
					}
				var offerList = document.getElementById("offers");
				if (offerList != null) {
					for (var i = 0; i < offerList.childNodes.length; i++) {
						var offerItem = offerList.childNodes[i];
						offerItem.className = in_array(offerItem.id, offers) ? "on" : "off";
					}
				}
				$('outfit').innerHTML = parts[1];
				computetotal();
			}
		}
	});
}

function in_array(elem, arr) {
	for (var i = 0; i < arr.length; i++) {
		if (arr[i] == elem)
			return true;
	}
	return false;
}

function updateoutfit() {
	if (shopPage == 'outfit') {
		new Ajax.Request("?ajax=1", {
			parameters: 'callback=OutfitWindow::js_showoutfit',
			onSuccess: function(transport) {
				$('outfit').innerHTML = transport.responseText;
				computetotal();
			}
		});
	}
	if (shopPage == 'itemdetail') {
		new Ajax.Request("?ajax=1", {
			parameters: 'callback=OfferWindow::js_getoffers',
			onSuccess: function(xhr) {
				var offers = xhr.responseText.split(",");
				var loc = window.location + "";
				var i = loc.indexOf("oid=");
				var j = loc.indexOf('&', i);
				if (i != -1 && (j > i || j == -1)) {
					var currentOffer;
					if (j == -1) currentOffer = loc.substr(i + 4);
					else currentOffer = loc.substring(i + 4, j);
					if (!in_array(currentOffer, offers)) {
						window.location = "?page=shop";
					}
				}
			}
		});
	}
	if (shopPage == 'shop') {
		new Ajax.Request("?ajax=1", {
			parameters: 'callback=OfferWindow::js_getoffers',
			onSuccess: function(xhr) {
				var offers = xhr.responseText.split(",");
				for (var i = 0; i < offers.length; i++) {
					offers[i] = "ofr-li-" + offers[i];
				}
				var offerList = document.getElementById("offers");
				if (offerList != null) {
					for (var i = 0; i < offerList.childNodes.length; i++) {
						var offerItem = offerList.childNodes[i];
						offerItem.className = in_array(offerItem.id, offers) ? "on" : "off";
					}
				}
			}
		});
	}
	updaterenderoutfit();
}

function updaterenderoutfit() {
	new Ajax.Request("?ajax=1&page=" + shopPage, {
      parameters: 'callback=ShopViewer::js_updaterenderoutfit',
	  onSuccess: function (transport) {
	  	$("renderoutfit").innerHTML = transport.responseText;
	  }
	});
}

function computetotal() {
	var elms = $$('#outfit li .price');
	var total = 0.0;
	var value;
	var regexp = /,/g;
	$("amount").update("&euro; 0.00");
	if (elms.length == 0)
		return;
	for (var i = 0; i < elms.length; i++) {
		value = elms[i].firstChild.nodeValue.substring(2);
		total += parseFloat(value.replace(regexp, ""));
	}
	$("amount").update("&euro; " + localizeValue(total));
}

function localizeValue(amount) {
	var ints = parseInt(amount);
	var frac = Math.round((amount - ints) * 100) + "";
	if (frac.length  == 1)
		frac = frac + "0";
	var part = parseInt(ints / 1000);
	if (part) {
		return part + "," + ints % 1000 + "." + frac;
	}
	return ints + "." + frac;
}


var hooverOffsetX = 10;
var hooverOffsetY = -30;
var toolTipStyle;
var render;

function initToolTips() {
  render = $("render-shop");
  toolTipStyle = $("toolTipLayer").style;
  toolTipStyle.zIndex = 3;
  toolTipStyle.display = "none";
  toolTipStyle.visibility = "visible";
}

function toolTipClick() {
    if (shopPage == 'shop') {
	  window.location = "?page=outfit";
	}
    else {
	  window.location = "?page=shop";
	}
}

function moveToMousePos(e) {
  if (!e)
	  var e = window.event;
  if (!e)
	alert("aaa");
  var x;
  var y;
  if (e.pageX || e.pageY) {
  	x = e.clientX;
  	y = e.clientY;
  }
  else if (e.clientX || e.clientY) {
    x = e.clientX + document.body.scrollLeft +
		document.documentElement.scrollLeft;
    y = e.clientY + document.body.scrollTop +
		document.documentElement.scrollTop;
  }
  render.style.cursor = "pointer";
  toolTipStyle.display = "block";
  toolTipStyle.top = y + hooverOffsetY + 'px';
  toolTipStyle.left = x + hooverOffsetX + 'px';
  return true;
}

function hideToolTip() {
  toolTipStyle.display = "none";
}

function showToolTip(e) {
  var msg = "<img src=\"" + LANG_HOVERCONTINUE_URL + "\"/>";
  if (shopPage == 'shop') {
    msg = "<img src=\"" + LANG_HOVEROUTFIT_URL + "\"/>";
  }
  $("toolTipLayer").innerHTML = msg;
  toolTipStyle.display = 'block';
  moveToMousePos(e);
}

function setupViewerClick() {
	var renderElement = $("render-shop");
	if (renderElement != null) {
		initToolTips();
		renderElement.alt = "";
		renderElement.title = "";
		renderElement.onclick = function () { toolTipClick(); };
		renderElement.onmouseover = function (e) { showToolTip(e); };
		renderElement.onmouseout = function () { hideToolTip(); };
		renderElement.onmousemove = function (e) { moveToMousePos(e); };
		renderElement.style.cursor = "pointer";
	}
}

function track_link(name, value) {
	pageTracker._trackEvent('forward', name, value);
}

