var map = new Object();
var productCount = 2;
var ajaxTimer;
var xmlDoc;


if (window.ActiveXObject)
  {// code for IE
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
  }
else if (document.implementation.createDocument)
  {// code for Firefox, Mozilla, Opera, etc.
  xmlDoc=document.implementation.createDocument("","",null);
  }
else
  {
  alert('Your browser cannot handle this script');
  }



function tuote(id)
{
	this.id = id;
	this.stoptime = new Date();
	
	this.hintapaikka = "price" + this.id;
	this.nimipaikka = "name" + this.id;
	this.jaljellapaikka = "timeleft" + this.id;
	this.loppuupaikka = "ends" + this.id;
	
	
	document.getElementById(this.hintapaikka).innerHTML = 'ladataan...';
	document.getElementById(this.nimipaikka).innerHTML = 'ladataan...';
	document.getElementById(this.loppuupaikka).innerHTML = 'ladataan...';
	document.getElementById(this.jaljellapaikka).innerHTML = 'ladataan...';
	
	
	this.ping = function () {
		var timeLeft = Math.round((this.stoptime.getTime() - (new Date()).getTime()) / 1000);
		if (timeLeft > 0) {
			document.getElementById(this.jaljellapaikka).innerHTML = parseTime(timeLeft);
			this.timer = setTimeout("map['"+this.id+"'].ping()", 250);
		}
		else {
			document.getElementById(this.jaljellapaikka).innerHTML = 'Tarkastetaan...';
		}
	}
	
	this.load = function (huutaja, hinta, jaljella, tila, add) {
		clearTimeout(this.timer);
		if (tila == 'active') {
			this.stoptime = new Date(new Date().getTime() + (jaljella * 1000));
			
			document.getElementById(this.hintapaikka).innerHTML = hinta;
			document.getElementById(this.nimipaikka).innerHTML = huutaja;
			document.getElementById(this.loppuupaikka).innerHTML = add;
			this.ping();
		}
		else if (tila == 'pause') {
			document.getElementById(this.hintapaikka).innerHTML = hinta;
			document.getElementById(this.nimipaikka).innerHTML = huutaja;
			document.getElementById(this.loppuupaikka).innerHTML = add;
			document.getElementById(this.jaljellapaikka).innerHTML = parseTime(jaljella);
		}
		else if (tila == 'sold') {
			document.getElementById(this.hintapaikka).innerHTML = hinta;
			document.getElementById(this.nimipaikka).innerHTML = huutaja;
			document.getElementById(this.loppuupaikka).innerHTML = 'Onnea voittajalle!';
			document.getElementById(this.jaljellapaikka).innerHTML = '<strong>Myyty</strong>';
		}
		else if (tila == 'wait') {
			document.getElementById(this.hintapaikka).innerHTML = hinta;
			document.getElementById(this.nimipaikka).innerHTML = 'Odottaa huutoja';
			document.getElementById(this.loppuupaikka).innerHTML = add;
			document.getElementById(this.jaljellapaikka).innerHTML = '<strong>Odottaa huutoja</strong>';
		}
		
	}
}

function parseDate(inputDate) {
	var hour = inputDate.getHours();
	var min = inputDate.getMinutes();
	var sec = inputDate.getSeconds();
	if (hour < 10) {
		hour = '0' + hour;
	}
	if (min < 10) {
		min = '0' + min;
	}
	if (sec < 10) {
		sec = '0' + sec;
	}
	return inputDate.getDate() +  "." + inputDate.getMonth() + ". " + inputDate.getFullYear() + " klo " + hour + ":" + min + ":" + sec;
}

function parseTime(inputSeconds) {
	var seconds = inputSeconds % 60;
	inputSeconds = (inputSeconds - seconds) / 60;
	var minutes = inputSeconds % 60;
	inputSeconds = (inputSeconds - minutes) / 60;
	var hours = inputSeconds;
	var returnString = '';
	if (hours > 0) {
		returnString = hours + " tuntia ";
	}
	if (minutes > 0) {
		returnString = returnString + minutes + " min ";
	}
	returnString = returnString + seconds + " sek ";
	return returnString;
}

function bid(id, amount) {
	var xmlhttp=null;
	if (window.XMLHttpRequest)
	  {// code for IE7, Firefox, Mozilla, etc.
	  xmlhttp=new XMLHttpRequest();
	  }
	else if (window.ActiveXObject)
	  {// code for IE5, IE6
	  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	  }
	if (xmlhttp!=null)
	  {
	  xmlhttp.onreadystatechange=onResponse;
	  xmlhttp.open("GET",'httpbid.php?id=' + id,true);
	  xmlhttp.send(null);
	  }
	else
	  {
	  alert("Your browser does not support XMLHTTP.");
	  return;
	  }
	//alert("huuto lähetetty, odotetaan vastausta...");
	function onResponse()
	{
		if(xmlhttp.readyState!=4) return;
		if(xmlhttp.status!=200)
		  {
		  alert("Problem retrieving XML data");
		  return;
		  }
	
		var message = xmlhttp.responseXML.getElementsByTagName("message")[0].childNodes[0].nodeValue;
		alert(message);
		pingHost(amount);
	}
	
}

function pingHost(amount) {
	clearTimeout(ajaxTimer);
	
	
	var xmlhttp=null;
	if (window.XMLHttpRequest)
	  {// code for IE7, Firefox, Mozilla, etc.
	  xmlhttp=new XMLHttpRequest();
	  }
	else if (window.ActiveXObject)
	  {// code for IE5, IE6
	  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	  }
	if (xmlhttp!=null)
	  {
	  xmlhttp.onreadystatechange=onResponse;
	  xmlhttp.open("GET",'ping.php',true);
	  xmlhttp.send(null);
	  }
	else
	  {
	  alert("Your browser does not support XMLHTTP.");
	  }
	function onResponse()
	{
		if(xmlhttp.readyState!=4) return;
		if(xmlhttp.status!=200)
		  {
		  alert("Problem retrieving XML data");
		  return;
		  }
	
		var x=xmlhttp.responseXML.getElementsByTagName("message");
	
		var id;
		var timeLeft;
		var person;
		var price;
		var state;
		var add;
		
		if (x.length != amount) {
			window.location.reload();
		}
		
		for (var i=0;i<x.length;i++)
		{ 
			id = x[i].getElementsByTagName("id")[0].childNodes[0].nodeValue;
			timeLeft = x[i].getElementsByTagName("timeleft")[0].childNodes[0].nodeValue;
			person = x[i].getElementsByTagName("person")[0].childNodes[0].nodeValue;
			price = x[i].getElementsByTagName("price")[0].childNodes[0].nodeValue;
			state = x[i].getElementsByTagName("state")[0].childNodes[0].nodeValue;
			add = x[i].getElementsByTagName("add")[0].childNodes[0].nodeValue;
			if (typeof map[id] == 'undefined') {
				window.location.reload();
			}
			else {
				map[id].load(person, price, timeLeft, state, add);
			}
			
		}
		ajaxTimer = setTimeout("pingHost(" + amount + ")", 4000);
	}

}