var xmlHttp;
var imageid;
var newitem;
var browser;
var lastForceImageRefresh = 0;
var lastAmungUsCtrUpd = 0;

function updateStuff(itemTitle, itemPrice, itemCondition, itemSoldOut, inWootOff, soldOutPercentage, cacheRefreshRate, serverTime, detailImageUrl, buyUrl, priceCompUrl, bannerUrl, sideDealsUrl)
{
	var d = new Date();

	try {
		remoteUpdate(itemTitle, itemPrice, itemCondition, itemSoldOut, inWootOff, soldOutPercentage, cacheRefreshRate, serverTime, detailImageUrl, buyUrl, priceCompUrl, bannerUrl, sideDealsUrl);
	}
	catch (e)
	{
//		alert("An exception occurred in the script. Error name: " + e.name + ". Error message: " + e.message);
	}

	if (lastAmungUsCtrUpd == 0)
		lastAmungUsCtrUpd = d.getTime();

	if (d.getTime() - lastAmungUsCtrUpd > 60000)
	{
		//document.getElementById('amungusctr').src = 'http://whos.amung.us/swidget/s05sckgn.gif&lulz=' + Math.floor(Math.random() * 99999999);
		lastAmungUsCtrUpd = d.getTime();
	}
}
function defcon1() {
	xmlHttp.abort();
	if (document.getElementById('time')) document.getElementById('time').innerHTML = "Cache page timeout. Retrying.";
	clearTimeout(stopfetch);
	setTimeout("ajaxUpdater('woot.xml');",5000);
}
function displayTime(timestamp,serverTime) {
	currentTime = new Date();
	if(currentTime.getHours() < 10) {
		var hours = '0' + currentTime.getHours();
	}
	else {
		var hours = currentTime.getHours();
	}
	if(currentTime.getMinutes() < 10) {
		var minutes = '0' + currentTime.getMinutes();
	}
	else {
		var minutes = currentTime.getMinutes();
	}
	if(currentTime.getSeconds() < 10) {
		var seconds = '0' + currentTime.getSeconds();
	}
	else {
		var seconds = currentTime.getSeconds();
	}
	if(serverTime < timestamp) {
		serverTime = timestamp;
		document.getElementById('servertime').innerHTML = serverTime;
	}
	var secOld = Math.round(eval(serverTime - timestamp));
	if(secOld > 90) {
		secOld = 90;
	}
	return 'Cache is about ' + secOld + ' second(s) old. (' + hours + ':' + minutes + ':' + seconds + ')';
}
function elementFix(elementTagName) {
	if (elementTagName == '<b>') {
		if ((browser != "IE") && (navigator.appName != "Microsoft Internet Explorer")) return '<b>';
		else return '<B>';
	}
	if (elementTagName == '</b>') {
		if ((browser != "IE") && (navigator.appName != "Microsoft Internet Explorer")) return '</b>';
		else return '</B>';
	}
 		if ((browser != "IE") && (navigator.appName != "Microsoft Internet Explorer")) {
		regex = /Firefox\/(\d)[\.\d.*]?/i;
		regex2 = /Iceweasel\/(\d)[\.\d.*]?/i;
		match = regex.exec(navigator.userAgent);
		match2 = regex2.exec(navigator.userAgent);
		if (match) {
			if (match[1] == 3) {
				return "woot:" + elementTagName;
			}
			else return elementTagName;
		}
		else if (match2)
		{
                        if (match2[1] == 3) {
                                return "woot:" + elementTagName;
                        }
                        else return elementTagName;
		}
		else return elementTagName;
	}
	else return "woot:" + elementTagName;
}
function ajaxUpdater(urlFetch)  {
	var wootCache;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
		browser = "notIE";
	}
	catch (e)
	{
		// Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
			browser = "IE";
		}
		catch (e)
		{
			try
			{
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
				browser = "IE";
			}
			catch (e)
			{
				alert("Your browser does not support AJAX!  You are being redirected to a page better suited for your browser.");
				window.location = "/noajax.php"
				return false;
			}
		}
	}
	xmlHttp.onreadystatechange=function()
	{
		if(xmlHttp.readyState==4)
		{

			stopfetch = setTimeout('defcon1();',15000);
			if (xmlHttp.responseXML.getElementsByTagName('title')[0].firstChild.nodeValue) {
				if(imageid) {
					if((imageid != xmlHttp.responseXML.getElementsByTagName('forceimagerefresh')[0].firstChild.nodeValue) && (document.getElementById('title').innerHTML != (elementFix('<b>') + xmlHttp.responseXML.getElementsByTagName('title')[0].firstChild.nodeValue + elementFix('</b>')))) {
						imageid = xmlHttp.responseXML.getElementsByTagName('forceimagerefresh')[0].firstChild.nodeValue;
					}
				}
				else { imageid = xmlHttp.responseXML.getElementsByTagName('forceimagerefresh')[0].firstChild.nodeValue; }
			}
			else { 
				defcon1();
				return 0;
			}
			wootCache=xmlHttp.responseXML.getElementsByTagName('title')[0].firstChild.nodeValue;
			if((wootCache.length > 0) && (xmlHttp.responseXML.getElementsByTagName('WOOT')[0].childNodes.length >= 10))
			{
				var itemTitle = xmlHttp.responseXML.getElementsByTagName('title')[0].firstChild.nodeValue;
				var itemPrice = xmlHttp.responseXML.getElementsByTagName(elementFix('price'))[0].firstChild.nodeValue;
				var itemCondition = xmlHttp.responseXML.getElementsByTagName(elementFix('condition'))[0].firstChild.nodeValue;
				var itemSoldOut = xmlHttp.responseXML.getElementsByTagName(elementFix('soldout'))[0].firstChild.nodeValue;
				var inWootOff = xmlHttp.responseXML.getElementsByTagName(elementFix('wootoff'))[0].firstChild.nodeValue;
				var soldOutPercentage = xmlHttp.responseXML.getElementsByTagName(elementFix('soldoutpercentage'))[0].firstChild.nodeValue;
				var serverUpdTime = xmlHttp.responseXML.getElementsByTagName('timestamp')[0].firstChild.nodeValue;
				var cacheUpdRate = xmlHttp.responseXML.getElementsByTagName('refresh')[0].firstChild.nodeValue;
				var detailImageUrl = xmlHttp.responseXML.getElementsByTagName(elementFix('detailimage'))[0].firstChild.nodeValue;
				var buyUrl = xmlHttp.responseXML.getElementsByTagName(elementFix('purchaseurl'))[0].firstChild.nodeValue;
				var priceComparatorUrl = xmlHttp.responseXML.getElementsByTagName(elementFix('pricecomp'))[0].firstChild.nodeValue;
				var forceImageRefresh = xmlHttp.responseXML.getElementsByTagName('forceimagerefresh')[0].firstChild.nodeValue;
				var bannerUrl = xmlHttp.responseXML.getElementsByTagName('bnurl')[0].firstChild.nodeValue;
				var sideDealsUrl = xmlHttp.responseXML.getElementsByTagName('sdurl')[0].firstChild.nodeValue;
				var minsLeft =  xmlHttp.responseXML.getElementsByTagName('minsleft')[0].firstChild.nodeValue;
				updateStuff(itemTitle, itemPrice, itemCondition, itemSoldOut, inWootOff, soldOutPercentage, cacheUpdRate, serverUpdTime, detailImageUrl, buyUrl, priceComparatorUrl, bannerUrl, sideDealsUrl)
				document.getElementById('wootoff').innerHTML = '';
				document.getElementById('title').innerHTML='<b>' + itemTitle + '</b>';
				document.getElementById('price').innerHTML=itemPrice;
				document.getElementById('condition').innerHTML='<b>Condition: </b>' + itemCondition;
				if(itemSoldOut == 'True')
				{
					document.getElementById('purchaseurl').innerHTML='<div class="soldout"><b>Item is Sold Out!</b></div>';
				}
				else
				{
					if(xmlHttp.responseXML.getElementsByTagName(elementFix('soldoutpercentage')).length == 0) {
						document.getElementById('purchaseurl').innerHTML='<a class="buylink" target="_blank" href="' + buyUrl + '">I want one!</a>';
					}
					else {
						if(soldOutPercentage >= .90) {
							document.getElementById('purchaseurl').innerHTML='<a class="buylink" target="_blank" href="' + xmlHttp.responseXML.getElementsByTagName(elementFix('purchaseurl'))[0].firstChild.nodeValue + '">I want one!<br />(They\'re almost gone!)</a>';
						}
						else {
							document.getElementById('purchaseurl').innerHTML='<a class="buylink" target="_blank" href="' + xmlHttp.responseXML.getElementsByTagName(elementFix('purchaseurl'))[0].firstChild.nodeValue + '">I want one!</a>';
						}
					}
				}
				if(inWootOff == 'True')
				{
					var percentleft = Math.round(eval(1 - soldOutPercentage) *100) + '%';
					timeLeft = '';
					minsLeft = parseFloat(minsLeft);
					if (minsLeft >= 0) timeLeft = Math.floor(minsLeft) + 'mins ' + Math.floor((minsLeft-Math.floor(minsLeft))*60) + 'secs';
					else timeLeft = "Estimating...";
					if (itemSoldOut == 'True')
					{
						document.title = 'SOLDOUT ' + wootCache;
						document.getElementById('wootoff').innerHTML = 'Woot-off!<br /><font size="+1"><b>SOLD OUT</b><br/>&nbsp;';
					}
					else
					{
						document.title = percentleft + ' ' + wootCache + ' - ' + timeLeft + ' left';
						document.getElementById('wootoff').innerHTML = 'Woot-off!<br /><font size="+1"><b>' + percentleft + '</b></font><br/><b>Time left (BETA): '+timeLeft+'<br/>&nbsp;';
					}
				}
				else
				{
					document.title = wootCache;
				}
				document.getElementById('discussionurl').innerHTML='<br /><a class="forumlink" target="_blank"  href="' + xmlHttp.responseXML.getElementsByTagName(elementFix('discussionurl'))[0].firstChild.nodeValue + '">Discuss this product</a>';
				var products = xmlHttp.responseXML.getElementsByTagName(elementFix('product'));
				document.getElementById('itemlist').innerHTML = '';
				for (var i=0;i<products.length;i++)
				{
					var items = document.createElement('div');
					items.className = 'items';
					var item = document.createElement('p');
					item.className = 'item';
					if (products[i].childNodes.length > 0) {
						prodschildindex = (products.length - 1);
						var boldproduct=document.createElement('b');
						boldproduct.appendChild(document.createTextNode("Product: "));
						var productdesc = document.createTextNode(products[i].getAttribute('quantity') + ' ' + products[i].firstChild.nodeValue);
					}
					if (products[i].childNodes.length > 0)
					{
						if (i == 0) {
							item.appendChild(boldproduct);
							item.className='firstindent';
						}
						else item.style.cssText='margin-left:58px;';
					}
					if (products[i].childNodes.length > 0) item.appendChild(productdesc);
					items.appendChild(item);
					document.getElementById('itemlist').appendChild(items);
					document.getElementById('shipping').innerHTML='+ $5 shipping';
				}
				if(document.getElementById('image') && (forceImageRefresh != lastForceImageRefresh)) {
					document.getElementById('image').innerHTML = '<a href="#" onClick="openDetailImage(); return false;"><img src="image.jpg?' + forceImageRefresh + '" alt="' + wootCache + '" />';
					lastForceImageRefresh = forceImageRefresh;
				}
				if (document.getElementById('time')) document.getElementById('time').innerHTML = 'Cache is updated every ' + cacheUpdRate + ' seconds.  ' + displayTime(serverUpdTime,document.getElementById('servertime').innerHTML);
				clearTimeout(stopfetch);
				setTimeout('wootrefresh();',eval(xmlHttp.responseXML.getElementsByTagName('refresh')[0].firstChild.nodeValue * 1000));
			}
			else {
				clearTimeout(stopfetch);
				setTimeout("ajaxUpdater('woot.xml');",5000);
				document.getElementById('time').innerHTML = "Cache failed to update.  Refreshing again in 5 seconds.";
			}
		}
	}
	xmlHttp.open("GET",urlFetch,true);
	xmlHttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
	xmlHttp.send(null);
}

