$(function(){
	// Kytketään onclick -eventti fakecheck -luokilla määriteltyihin nappuloihin
	$(".fakecheck").click(function(e){
		reseptiajaxhaku();
	});
	
	// Kytketään sliderin vaihtoeventti päälle ja kutsumaan meidän omaa funktiotamme
	$("#slider").bind("slidechange", function(e,ui) {
		reseptiajaxhaku();
	});
	
	// Kutsutaan funktiota ihan suoraan, jolloin saamme ensimmäisen ajax-kutsun käyntiin ja tulokset ruudulle, kun sivun latautuminen on valmis
	reseptiajaxhaku("init");



  // Luodaan muuttujat sivunumeroita varten
  var api = $(".scrollabletulokset").data("scrollable");
  var paikka;
  var sivunumero;
  var siirtyma;

  // Tulosten siirto numeroita klikkaamalla
  $(".sivuvalintanumero").live('click',function () {
    sivunumero = $(this).text();
    paikka = api.getIndex();
    siirtyma = (-1*(paikka-sivunumero)-1);
    api.move(siirtyma);
  });
  
  // Tulosten siirto edellinen-linkkiä klikkaamalla
  $("#sivuvalinta-edellinen").live('click',function () {
    api.prev();
  });
  
  // Tulosten siirto seuraava-linkkiä klikkaamalla
  $("#sivuvalinta-seuraava").live('click',function () {
    api.next();   
  });
  
  // Luodaan sivuvalinnan numerot uusiksi aina kun tuloksia rullataan
  api.onSeek(function() {
    sivuvalinnanLuonti();
  });
  

});

// Sivuvalinnan numeroiden sekä edellinen- ja seuraava-linkkien tekeminen 
function sivuvalinnanLuonti() {
  var api = $(".scrollabletulokset").data("scrollable");
  var paikka = api.getIndex()+1;
  var koko = api.getSize();
  var sivuvalikko = "";
  var pisteet_alku = 0;
  var pisteet_loppu = 0;
  sivuvalikko += '<a id="sivuvalinta-edellinen"><&nbsp;Edellinen</a> ';
  for (var i = 0; i < api.getSize(); i++){
    
    if (i > 0) {
      if (paikka == i+1) {
        sivuvalikko += '<span class="sivuvalintanumero">' + paikka + '</span> ';
      } else if ((paikka <= i+3) && (paikka >= i-1)) {
        sivuvalikko += '<a class="sivuvalintanumero">' + (i+1) + '</a> ';
      } else if ((pisteet_alku == 0) && (i < paikka)){
        sivuvalikko += '<span class="sivuvalintavali">...</span> ';
        var pisteet_alku = 1;
      } else if ((pisteet_loppu == 0) && (i > paikka) && (paikka != koko-3)){
        sivuvalikko += '<span class="sivuvalintavali">...</span> ';
        var pisteet_loppu = 1;
      }
    }

    if (i == 0) {
      if (paikka == i+1) {
        sivuvalikko += '<span class="sivuvalintanumero">' + paikka + '</span> ';
      } else {
        sivuvalikko += '<a class="sivuvalintanumero">' + (i+1) + '</a> ';
      }
    } 

    if ((1+i == koko) && (paikka <= koko-3)){
      if (paikka == i+1) {
        sivuvalikko += '<span class="sivuvalintanumero">' + paikka + '</span> ';
      } else {
        sivuvalikko += '<a class="sivuvalintanumero">' + (i+1) + '</a> ';
      }
    }
    
  }
  
  sivuvalikko += '<a id="sivuvalinta-seuraava">Seuraava ></a>';
  $("#sivuvalinta").html(sivuvalikko); 
}


// Muodostetaan ajastinmuuttuja
var ajastin;

// Muodostetaan pino ajaxkutsuille
var ajaxpino = [];

function reseptiajaxhaku(alustus){

	// Feidataan hakutulokset piiloon
	$("#hakutulosluettelo").fadeOut();
	
	// Ajax-loader -ikoni
	$("#hakutulos").html('<img border="0" src="/modules/keittokirja_2008/raisio-loader.gif" alt="..." title="..." />');
	
	// Tyhjennetään ajastinmuuttuja, jos sellainen on asetettu
	clearTimeout(ajastin);
	
	// Kutsutaan ajaxia vasta vähän ajan päästä, ettei tehdä joka naksusta uutta kyselyä
	ajastin=setTimeout(function(){ajaxkutsu(alustus)},200);
}

function ajaxkutsu(alustus){
	// Lisätään kutsu pinoon
	ajaxpino.push("x");
	
	// Haetaan NAS-yhteensopiva URL ajaxkutsulle
	var ajaxurl = $("#reseptihakuajax_url").val();
	
	// Muodostetaan parametrit sivuilla olevista tiedoista
	var params = "valmistusajan-arvo="+$("#valmistusajan-arvo").val();
	if($('#ajax-lomake').serialize() != ""){
		params += "&"+$('#ajax-lomake').serialize();
	}
	
	// Luodaan uusi ajaxkutsu
	$.ajax({
		type: "POST",
		url: ajaxurl,
		data: params,
		success: function(ret){
		
			// Käsitellään tulokset vain, kun pinossa on enää yksi kutsu jäljellä
			if(ajaxpino.length < 2){
				// Käsitellään saatuja tuloksia
				var tulokset = ret.split("&&");
				
				// Ensimmäinen tulos on reseptien kokonaislukumäärä, sijoitetaan se oikeaan kohtaan sivulle
				$("#hakutulos").html(tulokset[0]);
            
				// Siirretään hakutulokset aina alkuun uuden haun yhteydessä
				var api = $(".scrollabletulokset").data("scrollable");
				api.begin();
        
				// Koostetaan taulukko lopuista tuloksista
				var tulostaulukko = tulokset[1].split("!!");
				
				// Luodaan uusi tekstimuuttuja, johon kasataan haluttu tuloste
				var tuloskooste = "";
        
				var h = 0;

				var silmukanpituus = tulostaulukko.length-1;
				if(alustus=="init"){
					silmukanpituus = 8;
				}
        
				// Käydään jokainen taulukonkohta läpi
				for (var i = 0; i < silmukanpituus; i++){
					
					// Jokainen osuma pilkotaan vielä pienempiin elementteihin
					var rivitiedot = tulostaulukko[i].split("::");
					if(rivitiedot[1] != ""){
						
						// Tulostetaan div aina ennen kahdeksan reseptin settiä sekä sivunumerot
						if (h == 0) {
							tuloskooste += '<div class="rullattava">';
						}
			  
						// Tulostetaan div jokaisen osuman ympärille
						tuloskooste += '<div class="tulosruutu">';
					
						// Lisätään pilkotut tiedot koostemuuttujaan, mikäli ne ovat olemassa. Kiedotaan ne samalla divien sisälle
						tuloskooste += '<a href="'+rivitiedot[0]+'">';
						tuloskooste += '<div class="kuva"><img src="/uploads/image/hakukuvat/'+rivitiedot[1]+'.png" /></div>';
						if(rivitiedot[2] != undefined){
							tuloskooste += '<div class="ohje">'+rivitiedot[2]+'</div>';
						}
						if(rivitiedot[3] != undefined){
							tuloskooste += '<div class="ruokavaliot">'+rivitiedot[3]+'</div>';
						}
						tuloskooste += '</a></div>';
						
						// Rullattava-divin lopetus
						if (h == 7) {
							tuloskooste += '</div>';
						}

						h++;

						if (h == 8) {
							h = 0;
						}
					}
				}
        
        
				// Runtataan äsken luotu tuloskooste oikeaan paikkaansa sivulle
				$("#hakutulosluettelo").html(tuloskooste); 
				$("#hakutulosluettelo").fadeIn();
			}
			
			// Poistetaan kyseinen kutsu pinosta
			ajaxpino.pop();
      
      // Luodaan ensimmäiselle haulle sivunumerot
      sivuvalinnanLuonti();
      },
		
		// Mikäli ajaxhaku tuottaa virheen, näytetään se laatikon sisällössä. Poistetaan tuotantoon mennessä, tai siistitään edes...
		error:function (xhr, ajaxOptions, thrownError){
			alert(xhr.responseText);
		}

    
	});
}
