var vhodPod = new Object();
var objRazTekma = { /*"fivk":"5 km", */"tenk":"10 km", "half":"polmaraton", "mara":"maraton" };
var objRazTrening = { /*"fivk":"5 km", */"tenk3":"10 km",  "half4":"polmaraton", "mara":"maraton" };
var objRazTeden = { "6":"10 - 16 km","11":"17 - 24 km","16":"25 - 32 km","21":"33 - 40 km","26":"41 - 48 km", 
		"31":"49 - 56 km", "36":"57 - 64 km", "41":"65 - 72 km", "46":"73 - 80 km", "51":"81 - 88 km", 
		"56":"89 - 100 km" };
var objTezavnost = { 
		"main":"vzdrževati tekaško pripravljenost/brez tekmovalnega cilja", 
		"mod":"zmerno intenzivno/povečati predvsem obseg vadbe", 
		"hard":"intenzivno/povečati obseg in intenzivnost vadbe" , 
		"vhard":"zelo intenzivno/povečati obseg in močno povečati intenzivnost vadbe" 
	};
var objDolgiTek = { "1":"ponedeljek", "2":"torek", "3":"sreda", "4":"četrtek", "5":"petek", "6":"sobota", "0":"nedelja" };



$(document).ready(function () {
	
	if( sIzracun && sIzracun.length > 0){
		izInitTime(sUre, sMin, sSek);
		izInitRazTekma(sRazTekma);
		izInitRazTrening(sRazTrening);
		izInitRazTeden(sRazTeden);
		izInitTezavnost(sTezavnost);
		izIzracun();
	
	}else{
		izInitTime(0, 0, 0);
		izInitRazTekma("");
		izInitRazTrening("");
		izInitRazTeden("11");
		izInitTezavnost("mod");
	}
	
	
	$("input#izracun").bind("click", function(el){
		izIzracun();
	});
	
});


function izInitTime(h, m, s){
	
	for(var i=0; i<7; i++){
		var op = document.createElement("option");
		op.value = i;
		op.text = i;
		op.selected = (h==i) ? true:false; 
		$("#ure")[0].options[i] = op;
	}
	
	for(var i=0; i<60; i++){
		var op = document.createElement("option");
		op.value = i;
		op.text = i;
		op.selected = (m==i) ? true:false; 
		$("#min")[0].options[i] = op;
	}	
	
	for(var i=0; i<60; i++){
		var op = document.createElement("option");
		op.value = i;
		op.text = i;
		op.selected = (s==i) ? true:false; 
		$("#sek")[0].options[i] = op;
	}		
	
}

function izGetTime(){
	var time = new Object();
	time.hours = parseInt( $("#ure")[0][ $("#ure")[0].selectedIndex ].value);
	time.minutes = parseInt( $("#min")[0][ $("#min")[0].selectedIndex ].value);
	time.seconds = parseInt( $("#sek")[0][ $("#sek")[0].selectedIndex ].value);
	return time;
}

function izInitRazTekma(r){
	jQuery.each(objRazTekma, function(key, value) {
		var options = $("#razTekma")[0].options;
		var op = document.createElement("option");
		op.value = key;
		op.text = value;
		op.selected = (key==r) ? true:false;
		options[options.length] = op;
	});
}


function izInitRazTrening(r){
	jQuery.each(objRazTrening, function(key, value) {
		var options = $("#razTrening")[0].options;
		var op = document.createElement("option");
		op.value = key;
		op.text = value;
		op.selected = (key==r) ? true:false;
		options[options.length] = op;
	});
}

function izInitRazTeden(r){
	jQuery.each(objRazTeden, function(key, value) {
		var options = $("#razTeden")[0].options;
		var op = document.createElement("option");
		op.value = key;
		op.text = value;
		op.selected = (key==r) ? true:false;
		options[options.length] = op;
	});
}

function izInitTezavnost(t){
	jQuery.each(objTezavnost, function(key, value) {
		var options = $("#tezavnost")[0].options;
		var op = document.createElement("option");
		op.value = key;
		op.text = value;
		op.selected = (key==t) ? true:false;
		options[options.length] = op;
	});	
	
	
}

/*function izInitDolgiTek(dan){
	jQuery.each(objDolgiTek, function(key, value) {
		var options = $("#dolgiTek")[0].options;
		var op = document.createElement("option");
		op.value = key;
		op.text = value;
		op.selected = (key==dan) ? true:false;
		options[options.length] = op;
	});	
}*/

function preveriVhodnePodatke(){
	
	clearLog();
	if( isNaN(vhodPod.hour) ) logErr("Dolžina teka v urah mora biti število.");
	if( isNaN(vhodPod.mins) ) logErr("Dolžina teka v minutah mora biti število.");
	if( isNaN(vhodPod.secs) ) logErr("Dolžina teka v sekundah mora biti število.");
	if( isNaN(vhodPod.mpwe) ) logErr("Razdalja, ki jo pretečete na teden, mora biti število.");
	if( isNaN(vhodPod.secs) ) logErr("Dolžina teka v sekundah mora biti število.");
	
	if( vhodPod.hour < 0 || vhodPod.hour > 6) logErr("Dolžina teka v urah mora biti med 0 in 6 ur.");
	if( vhodPod.mins < 0 || vhodPod.mins > 59) logErr("Dolžina teka v minutah mora biti med 0 in 59 minut.");
	if( vhodPod.secs < 0 || vhodPod.secs > 59) logErr("Dolžina teka v sekundah mora biti med 0 in 59 minut.");
	if(objectHasProperty(objRazTekma, vhodPod.rlen)) logErr("Neveljavna vrednost razdalje na dirki.");
	if(objectHasProperty(objRazTrening, vhodPod.rlen)) logErr("Neveljavna vrednost razdalje za katero trenirate.");
	if(objectHasProperty(objRazTeden, vhodPod.rlen)) logErr("Neveljavna vrednost za razdaljo, ki jo pretečete na teden.");
	if(objectHasProperty(objTezavnost, vhodPod.rlen)) logErr("Neveljavna vrednost za težavnost treninga.");
}


/** 
 * Returns true if the given program does not reach an appropriate level for
 * the selected training goal. 
 */ 
function preveriOpozorila(w)
{ 	
	var mlr = getMaxDT(w); 
	
	if((vhodPod.rdst == "mara" && mlr < 14) || (vhodPod.rdst.indexOf("half") != -1 && mlr < 6)) 
	{ 
		izPrikaziNapake(
		"Pripravili smo vam program, ki ste ga zahtevali. " + 
		"Vendar ste zahtevali program, ki vam ne dovoli dovolj časa za doseg optimalne pripravljenosti. " + 
		"Prporočamo vam, da si izberete primernejši plan treninga. " + 
		"Če pa se vseeno želite udeležiti teka in trenirati po tem planu, bodite pripravljeni, da boste tekli zelo konzervativno."); 		
	} 
}

/** 
 * This function returns the maximum Long Run distance for all the weeks in 
 * a program, with the caveat that the marathon itself is not counted. 
 */ 
function getMaxDT(w)
{ 
	var mlr = 0; 
	for(var i = 0; i < w.length; i++)
	{ 
		var lr = w[i].getLongRun();  
		// Be sure to disregard the marathon itself. 
		if(lr && mlr < lr.dst && lr.dst < 26)
		{ mlr = lr.dst; } 
	} 
	return mlr; 
} 



function izIzracun(){
	var time = izGetTime();
	vhodPod.hour = time.hours;
	vhodPod.mins = time.minutes;
	vhodPod.secs = time.hours;
	
	vhodPod.rlen = $("#razTekma")[0].options[$("#razTekma")[0].selectedIndex].value;
	vhodPod.rdst = $("#razTrening")[0].options[$("#razTrening")[0].selectedIndex].value;
	vhodPod.mpwe = parseInt($("#razTeden")[0].options[$("#razTeden")[0].selectedIndex].value);
	vhodPod.diff = $("#tezavnost")[0].options[$("#tezavnost")[0].selectedIndex].value;
	vhodPod.lrdy = 0; //parseInt($("#dolgiTek")[0].options[$("#dolgiTek")[0].selectedIndex].value);
	vhodPod.slen = 16; // 2-16
	vhodPod.trainstart = getFirstMonday().getTime();
	vhodPod.metr = "km";
	
	var sched = new defaultScheduler();
	var pacer = getPacerFromPR();
	var allWeeks = getFullProgram(sched); 
	
	$("#napaka").hide();
	
	preveriOpozorila(allWeeks);

	var startDate = new Date(vhodPod["trainstart"]);
	if(startDate!=null){
		var curDate = new Date(startDate.getTime()); 
	}
	
	
	var rezultat = new Array(); 
	
	
	
	for(var i = 0; i < allWeeks.length; i++)
	{ 
		var teden = new Array();
		
		var relInd = i; 
		if(getDiffCode(vhodPod["diff"]) == 0){
			relInd = i % 4;
		}

		var wo = allWeeks[relInd];

		var dateS1 = shortDate(curDate);
		var dateS2 = shortDate(new Date(curDate.getTime() + 6*24*60*60*1000));
		
		teden.push((i+1)+".<br/>od "+dateS1 + " do " + dateS2);
		// Last week of program has pace that reverts to first week's pace. 
		var targPaceWeek = (i == allWeeks.length-1) ? 0 : i;
		for(var j = 0; j < 7; j++)
		{ 
			var xj = (j+2) % 7;
			
			var toD = wo.days[xj].getDescLine(0);
			toD += wo.days[xj].getDescLine(1);   
			
			toD = toD.replace(/xpacex/, pacer.getTimeString(wo.days[xj], isMetric(), targPaceWeek));  
			// bug za intervalni tek mora biti v miljah za pravilni izpis časa.
			toD = toD.replace(/xpaceintervalx/, pacer.getTimeString(wo.days[xj], false, targPaceWeek)); 
			
			if( xj != 5){
				toD = toD.replace(/xregrunextrax/, "<b>Vaje za moč in gibljivost</b> (20 do 30 minut)");
			}else{
				toD = toD.replace(/xregrunextrax/, "<b>5 do 8 krat 100m hitrega teka</b>, odmor hoja nazaj");
			}
			
			//tt += toD;
			
			/*if( xj == 1 && i < allWeeks.length-1 ){
				// overridamo nedelje
				tt = "<b>ODMOR</b>";
			}*/
			
			teden.push(toD);
		}
		
		teden.push( wo.realDist(true) + " km");
		
		curDate.setTime(curDate.getTime() + 7*24*60*60*1000); 
		
		rezultat.push(teden);
	}
	
	if( !isError()){
		izPrikaziTabelo( rezultat );
	}else{
		izPrikaziNapake();
	}
	
}

function izPrikaziTabelo(rez){
	
	$("#rezultat").fadeOut(200, function(){
	
		var tbody = $("#rezultat table tbody")[0];
		
		while(tbody.childNodes[0]) tbody.removeChild(tbody.childNodes[0]);
		
		jQuery.each(rez, function(i, teden) {
			var tr = document.createElement("TR");
			jQuery.each(teden, function(j, dan) {
				var td = document.createElement("TD");
				td.innerHTML = dan;
				tr.appendChild(td);
			});
			
			tbody.appendChild(tr);
		});
		
		$("#rezultat").fadeIn(200);
	});
}

function izPrikaziNapake(){
	$("#napaka")[0].innerHTML = errorList();
	$("#napaka").show();
	
}

