var sCounter = 0;
var hCounter = 0;
var hChecked = 0;

MainTimer = "";

kuva1 = new Image();
kuva1.src = "tarkistetaan.gif";

kuva2 = new Image();
kuva2.src = "huuda.jpg";



function onMainTimer() {
  
  MOMEngine.onTimer();
  
  // Päivitetään huutokohteet..
  //---------------------------
  MOMEngine.updateCounters();

}


function addZero(mihin) {
    
      if (mihin < 10) {
      
        return "0" + mihin.toString();
      
      } else {
      
        return mihin;
      
      }
    
}



var DiiliMOMEngine = Class.create({

	
	initialize: function() {
	
	  // Pääkello..
    this.serverClock = new Date(); 
    // Huutokohteet..
		this.counters = new Array();
	  
	},
	
	onTimer: function() {

    //-----------------------------
    // Käännetään pääkelloa eteen..
    //-----------------------------
    	
    this.serverClock.setSeconds(this.serverClock.getSeconds() + 1);

    vkPaivat = new Array("Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai");

    kelloText = vkPaivat[this.serverClock.getDay()] + " ";
    kelloText += this.serverClock.getDate() + "." +  (parseInt(this.serverClock.getMonth())+1) + "." + this.serverClock.getFullYear();
    kelloText += " klo ";
    kelloText += addZero(this.serverClock.getHours()) + ':';
    kelloText += addZero(this.serverClock.getMinutes()) + ':';
    kelloText += addZero(this.serverClock.getSeconds());
	
	  hChecked ++;
	
	  if (hChecked == 2) {
		
      this.getBidData();	
	
	  }
	
    sCounter++;  
  
    if (sCounter == 30) {

      sCounter = 0;
    
      this.updateMainClock();   

	 
    }	
	
    var MKello = $('kello');   

    if (MKello != null) {    

     MKello.innerHTML =  kelloText;

    }

    hCounter++;  
  
    if (hCounter == 10) {
	    
	    hCounter = 0;
      this.getBidData();	 
	 
	  }
	 
	},
	
	updateMainClock: function() {
	

      fooTime = new Date(); 
  
      url = "time.php?t=" + fooTime.getTime(); 
    
      new Ajax.Request(url,{method: 'get', onSuccess: function(aResult) {
      
        this.aVastaus = aResult.responseText;
        MOMEngine.setServerTime(this.aVastaus);  
      
      }}); 	
	
	},
	
	getBidData: function() {

	  //------------------------------
	  // Päivitetään huutojen tiedot..
	  //------------------------------
	  
	  if (this.counters.length == 0) return;

	  
	  // Haetaan kaikkien tiedot 2sek välein
	  
	  nimet = "";
	  
	  for (i=0;i<this.counters.length;i++) { 
			
	    nimi = eval(this.counters[i] + '.getName()');
	   
	    if (nimet != "") {
	    
	      nimet += ";";
	    
	    } 
	    
	    // poistetaan alusta ID -merkintä
	    nimet += nimi.substr(2);
	  
	  }
		
		fooTime = new Date(); 
	  
	  url = "huudot.php?items=" + nimet + "&t=" + fooTime.getTime(); 
    
    new Ajax.Request(url,{method: 'get', onSuccess: this.updateItems});     	
	
	
	},
	
	updateItems: function(aResult) {
	
	  aItems = aResult.responseText.split("#");
	  
	  // 0=tunnus,1=status,2=loppuaika,3=hinta,4=huutaja
	  
	  
	  for (i=0;i< aItems.length;i++) {
	  
	    aItem = aItems[i].split(";");
	    
	    eval("ID" + aItem[0] + ".updateState('" + aItem[1] + "','" + aItem[2] + "','" + aItem[3] + "','" + aItem[4] + "','" + aItem[5] + "')"); 
	  
	  }    
	
	},
	

	setServerTime: function(aST) {

    this.aserverTime = aST;    

    this.serverClock.setFullYear(this.aserverTime.substr(0,4));
    this.serverClock.setMonth(this.aserverTime.substr(4,2)-1);
    this.serverClock.setDate(this.aserverTime.substr(6,2));
    this.serverClock.setHours(this.aserverTime.substr(8,2));
    this.serverClock.setMinutes(this.aserverTime.substr(10,2));
    this.serverClock.setSeconds(this.aserverTime.substr(12,2));
	  
	},
	
	getServerTime: function() {
	
	  return this.serverClock;
	
	},
	
	addAuct: function(aItem) {
	  
	  //--------------------------------
	  // Lisätään huuutokohde listalle..
	  //--------------------------------
	  
		this.counters.push(aItem);
	},
	unregisterCounter: function(name) {
		
		//---------------------------------
		// Poistetaan huutokohde listalta..
		//---------------------------------
		
		var newarr = this.counters.without(name);
		this.counters = newarr.clone();
	},
	updateCounters: function() {
		if (!this.counters) {
			CounterTimer.stop();
			return;
		}
		this.counters.each(function(item) {
			eval(item + '.updateTime()');
		});
	},
	updateState: function(item) {
		if (!this.counters) {
			CounterTimer.stop();
			return;
		}
			
		eval(item + '.updateState()');
	
	}
});


var RHCounter = Class.create({

  initialize: function(aItemID) {
    
    this.itemID = aItemID; 
    this.sulkeutuu = new Date();
    this.servoaika = new Date();
 
    this.apuInt = 0;
 
    this.maksimi = 0;
    this.status = "";
    this.alku = new Date();
    this.jaljella = 1000;
    this.vikahinta = 0.01;
    
    this.aika = document.getElementById(this.itemID + "_AIKA");
    this.huuto = document.getElementById(this.itemID + "_HUUTO"); 
    this.huutaja = document.getElementById(this.itemID + "_HUUTAJA");  
    this.huutoaika = document.getElementById(this.itemID + "_HUUTOAIKA"); 
    
    this.aika.innerHTML = "Lataan..";
    this.huuto.innerHTML = "Lataan..";
    this.huutaja.innerHTML = "Lataan..";
    this.huutoaika.innerHTML = "Lataan..";
    
    MOMEngine.addAuct(aItemID);
    
  
  },
  
  getName: function() {
  
    return this.itemID;
  
  },

  
  updateState: function(aStatus, aLoppuaika, aHuutoaika, aHinta, aHuutaja) {
    
    this.status = aStatus;

    this.huuto.innerHTML = aHinta + " &euro;";

    if (aHinta != this.vikahinta) this.valayta();
    
    this.vikahinta = aHinta;
    
    this.huutaja.innerHTML = aHuutaja;
   
    aTimeM = Math.floor(aHuutoaika / 60);
    aTimeS = Math.floor(aHuutoaika % 60); 
    
    if (aTimeS == 0) {
    
      if (aTimeM == 1) {
        
         aTime = aTimeM + " minuutti";
      
      } else {
      
         aTime = aTimeM + " minuuttia";
      
      }  
    
    } else if (aTimeM == 0) {
    
      aTime = aTimeS + " sekuntia";
    
    } else {
    
      aTime = aTimeM + " min " + aTimeS + " s";
    
    }
    
    this.huutoaika.innerHTML = aTime;
 

    if (aStatus == "K") {    

      this.sulkeutuu.setFullYear(aLoppuaika.substr(0,4));
      this.sulkeutuu.setMonth(aLoppuaika.substr(4,2)-1);
      this.sulkeutuu.setDate(aLoppuaika.substr(6,2));
      this.sulkeutuu.setHours(aLoppuaika.substr(8,2));
      this.sulkeutuu.setMinutes(aLoppuaika.substr(10,2));
      this.sulkeutuu.setSeconds(aLoppuaika.substr(12,2));

      this.alku = new Date();
    
      this.maksimi = (this.sulkeutuu - MOMEngine.getServerTime()) / 1000;     
    
    } else if (aStatus == "P") {

      this.jaljella = aLoppuaika;    
 

    }

 
  },

  
  valayta: function() {
  
    window.setTimeout("$('" + this.itemID + "_AIKA').style.backgroundColor = '#ff6666'", 10);
    window.setTimeout("$('" + this.itemID + "_AIKA').style.backgroundColor = '#ff7777'", 200);
    window.setTimeout("$('" + this.itemID + "_AIKA').style.backgroundColor = '#ff8888'", 300);
    window.setTimeout("$('" + this.itemID + "_AIKA').style.backgroundColor = '#ff9999'", 400);
    window.setTimeout("$('" + this.itemID + "_AIKA').style.backgroundColor = '#ffaaaa'", 500);
    window.setTimeout("$('" + this.itemID + "_AIKA').style.backgroundColor = '#ffbbbb'", 600);
    window.setTimeout("$('" + this.itemID + "_AIKA').style.backgroundColor = '#ffcccc'", 700);
    window.setTimeout("$('" + this.itemID + "_AIKA').style.backgroundColor = '#ffdddd'", 800);
    window.setTimeout("$('" + this.itemID + "_AIKA').style.backgroundColor = '#ffeeee'", 900);        
    window.setTimeout("$('" + this.itemID + "_AIKA').style.backgroundColor = '#ffffff'", 1000);        
  
  },
  
  updateTime: function() {

    if (this.status == "K") {


      currentdate = new Date();

      this.vali = (currentdate - this.alku) / 1000;

      this.jaljella = this.maksimi - this.vali;

      this.lisateksti = $(this.itemID + "_LISATEKSTI");
      this.lisateksti.innerHTML = "&nbsp;";  


      if (this.vali > this.maksimi) {			

         this.aika.innerHTML = "<img src='tarkistetaan.gif' />";

      } else {

        var oneMinute   = 60 //minute unit in seconds
        var oneHour     = oneMinute * 60 //hour unit in seconds
        var oneDay      = oneHour * 24 //day unit in seconds
        var paivia    = Math.floor(this.jaljella / oneDay)
        var tunteja   = Math.floor((this.jaljella - paivia * oneDay) / oneHour)
        var minuutteja = Math.floor((this.jaljella - paivia * oneDay - tunteja * oneHour) / oneMinute)
        var sekunteja = Math.floor((this.jaljella - paivia * oneDay - tunteja * oneHour - minuutteja * oneMinute))

  
        this.aika.innerHTML =  minuutteja + " minuuttia " + sekunteja + " sekuntia" ;    
    
      }

    } else if (this.status == "M") {
			
       MOMEngine.unregisterCounter(this.itemID);
       
       this.aika.innerHTML = "MYYTY!";
			  
       this.huutonappi = $(this.itemID + "_HUUTONAPPI");
			  
       if (this.huutonappi != null) {
			  
          this.huutonappi.onmouseover = null;
          this.huutonappi.onmouseout = null;
          this.huutonappi.onclick = null;
          this.huutonappi.style.cursor = "";   
          this.huutonappi.src= "myyty.jpg";
        
       }
        
       window.setTimeout("location.reload(true)", 30000);
			
    } else if (this.status == "P") {
			  

          this.lisateksti = $(this.itemID + "_LISATEKSTI");


          aTimeM = Math.floor(this.jaljella / 60);
          aTimeS = Math.floor(this.jaljella % 60); 


          this.lisateksti.innerHTML = "Huutokello on pysäytetty ja käynnistyy aamulla klo 09:00. Voit tarjota siitä huolimatta!";  
          this.aika.innerHTML =  aTimeM + " min " + aTimeS + " sekuntia" ;


    }
  


  }



});


function teeHuuto(aTunnus) {

    fooTime = new Date(); 
  
    url = "huuda.php?item=" + aTunnus + "&t=" + fooTime.getTime(); 
    
    this.huutonappi = $("ID" + aTunnus + "_HUUTONAPPI");
    
    this.huutonappi.onmouseOver = null;
    this.huutonappi.onmouseOut = null;
    this.huutonappi.src = "lahetetaan.gif";
    
    new Ajax.Request(url,{method: 'get', onSuccess: function(aResult) {

      huutonappi = $("ID" + aTunnus + "_HUUTONAPPI");
      huutonappi.src = "huuda.jpg";
      huutonappi.onmouseOver = "this.src='huuda2.jpg'";
      huutonappi.onmouseOut = "this.src='huuda.jpg'";      
      
      this.aVastaus = aResult.responseText.split("#");
      
      this.aResultCode = this.aVastaus[0];
            
      if (this.aResultCode == "OK") {
      
         $('kayttaja_huutoja').innerHTML = aVastaus[1];
         MOMEngine.getBidData();
      
      } else if (this.aResultCode == "NOBIDS") {
      
         alert('Sinulla ei ole yhtään huutoa tililläsi');
      
      } else if (this.aResultCode == "SOLD") {
      
         alert('Kohde on myyty');
      
      }    
      
    }}); 

}


MOMEngine = new DiiliMOMEngine();

mainTimer = new PeriodicalExecuter(onMainTimer, 1);
MOMEngine.updateMainClock();
onMainTimer();

MOMEngine.getBidData();

