var Pricelist =
{
	init: function()
	{
		if (typeof(window.pageYOffset) == 'number') setInterval("Pricelist.scrollingDetection()", 50);
		
		Pricelist.product = document.getElementById("productName").innerHTML;
		
		Pricelist.summary = document.getElementById("summary");
		Pricelist.summary.data = Core.getElementsByClass("boxData")[0];
		
		Pricelist.specs = document.getElementById("specs");
		Pricelist.specs.data = Core.getElementsByClass("boxData")[1];
		
		Pricelist.sliderTrack = document.getElementById("sliderTrack");
		
		Pricelist.inputs = document.getElementsByTagName("input");
		
		for (var i = 0; i < Pricelist.inputs.length; i++)
		{
			Core.addEventListener(Pricelist.inputs[i], "click", Pricelist.inputChange);
		}
		
		var requester = Core.ajax("Get", "ajax_pricelist.php?products=" + encodeURIComponent(Pricelist.product) + 
																																												 "&dummy=" + new Date().getTime(), true);
		
		requester.onreadystatechange = function()
		{ 
			if (requester.readyState == 4)
			{
				if (requester.status == 200 || requester.status == 304)
				{
					Pricelist.initial(requester.responseXML);
					Pricelist.inputChange();
				}
			}
		}
		
		var descs = Core.getElementsByClass("hoverTitle");
		
		for (var i=0; i < descs.length; i++)
		{
			var title =  descs[i].title;
			
			if (title && title.length > 0)
			{
				Core.addEventListener(descs[i], "mouseover", Pricelist.showTipListener);
				Core.addEventListener(descs[i], "mouseout", Pricelist.hideTipListener);
				Core.addEventListener(descs[i], "focus", Pricelist.showTipListener);
				Core.addEventListener(descs[i], "blur", Pricelist.hideTipListener);
			}
		}		
	},
	
	scrollingDetection: function()
	{
		var pageY = Core.getYOffset();
		
		if (pageY > 275) 
		{
			if (!Core.hasClass(Pricelist.summary, "floating")) 
			{
				Core.addClass(Pricelist.summary, "floating");
				Core.addClass(Pricelist.specs, "floating");
			}
			Pricelist.fixed = true;
		}
		else if (Pricelist.fixed)
		{
			Core.removeClass(Pricelist.summary, "floating");
			Core.removeClass(Pricelist.specs, "floating");
			Pricelist.fixed = false;
		}
	},
	
	inputChange: function(event)
	{
		Pricelist.productPrice = Pricelist.productBasePrice;
		Pricelist.specs.data.innerHTML = '<p>No Accessories Added</p>';
		Pricelist.specs.data.text = '';
	
		var inputs = '';
		
		for (var i = 0; i < Pricelist.inputs.length; i++)
		{
			if (Pricelist.inputs[i].checked)
			{
				inputs += Pricelist.inputs[i].nextSibling.innerHTML + ', ';
				if (Pricelist.inputs[i].nextSibling.innerHTML != '' && Pricelist.inputs[i].nextSibling.innerHTML != 'None')
				{
					Pricelist.addToSpecs(Pricelist.inputs[i].nextSibling.innerHTML, Pricelist.inputs[i].name);
				}
			}
		}
		
		if (Pricelist.specs.data.text != '') Pricelist.specs.data.innerHTML = Pricelist.specs.data.text;
		//alert(Pricelist.specs.data.text);
		
		requester = Core.ajax("Get", "ajax_pricelist.php?products=" + encodeURIComponent(inputs) +
																																										 "&dummy=" + new Date().getTime(), true);
				
		requester.onreadystatechange = function()
		{ 
			if (requester.readyState == 4)
			{
				if (requester.status == 200 || requester.status == 304)
				{
					Pricelist.update(requester.responseXML);
				}
			}
		}
	},
	
	initial: function(responseXML)
	{
		Pricelist.productBasePrice = parseFloat(responseXML.getElementsByTagName("productPrice")[0].firstChild.nodeValue);
		Pricelist.summary.data.innerHTML = "$" + Core.CurrencyFormatted(Pricelist.productBasePrice);
	},
	
	update: function(responseXML)
	{
		var productPrice = responseXML.getElementsByTagName("productPrice")[0].firstChild.nodeValue;
		
		Pricelist.productPrice += parseFloat(productPrice);
		Pricelist.summary.data.innerHTML = "$" + Core.CurrencyFormatted(Pricelist.productPrice);
	},
	
	addToSpecs: function(input, inputName)
	{
		Pricelist.specs.data.text += '<p><strong>' + input + '</strong></p>';
	},
	
	showTipListener: function(event)
	{
		Pricelist.showTip(this);
		Core.preventDefault(event);
	},
	
	hideTipListener: function(event)
	{
		Pricelist.hideTip(this);
	},
	
	showTip: function(link)
	{
		Pricelist.hideTip(link);
		var tip = document.createElement("span");
		tip.className = "tooltip";
		var tipText = document.createTextNode(link.title);
		tip.appendChild(tipText);
		link.appendChild(tip);
		
		link._tooltip = tip;
		link.title = "";
		
		//Fix for Safari2/Opera9 repaint issue
		document.documentElement.style.position = "relative";
	},
	
	hideTip: function(link)
	{
		if (link._tooltip)
		{
			link.title = link._tooltip.childNodes[0].nodeValue;
			link.removeChild(link._tooltip);
			link._tooltip = null;
			
			//Fix for Safari2/Opera9 repaint issue
			document.documentElement.style.position = "static";
		}
	}
};

Core.start(Pricelist);
