var __ie = (navigator.appName == 'Microsoft Internet Explorer') ? 1 : 0;
var do_connection_duration_return = false;
var dont_render_borders = false;
// var boje_za_plan_puta = ['#D8E7F6', '#CFDFEF'];
var brojac_redova_za_plan_puta = 0;
var pomocni_za_pp = 0;

function add_destination()
{
	var cloned_element_process_functions = [megaSerialize, oboji_redak];
	var clone_me = $('dest_copy_me1');
	var destination = $('destinations_add');
	destination.setAttribute('destinations_count', destination.getAttribute('destinations_count')*1+1);	
	var newNode1 = ISclone(destination,clone_me,cloned_element_process_functions,processCloner);	
	var clone_me = $('dest_copy_me2');
	var newNode2 = ISclone(destination,clone_me,cloned_element_process_functions,processCloner);
}

function oboji_redak(red1, container)
{
	var idx = brojac_redova_za_plan_puta % 2;
	var idx2 = idx == 1 ? 0 : 1;
	red1.bgColor = boje_za_plan_puta[idx];
	$('povratak_redak').bgColor = boje_za_plan_puta[idx2];
	pomocni_za_pp++;
	if(pomocni_za_pp == 2)
	{ 
		pomocni_za_pp = 0;
		brojac_redova_za_plan_puta++;
	}
}
function megaSerialize(node, container, level)
{
// 	try
// 	{
		var mega = node.getAttribute('megaSerialize');
		var elLevel = node.getAttribute('megaLevel');	
		if(mega != undefined && (level == elLevel))
		{
			mega = mega.replace(/(\$1\$)/g,'node');
			mega = mega.replace(/(\$2\$)/g,'container');
			eval(mega);
		}
		if(node.hasChildNodes())
		{
			var types = ['select','input','textarea','tr','td','div','span','img','table'];
			for(key in types)
			{
				els = node.getElementsByTagName(types[key]);
				for(key2 in els)
				{
					if(typeof(els[key2]) == 'object')
					{
						var mega = els[key2].getAttribute('megaSerialize');
						var elLevel = els[key2].getAttribute('megaLevel');
// 						alert(mega);
						if(mega != undefined && (level == elLevel))
						{
							mega = mega.replace(/(\$1\$)/g,'els[key2]');
							mega = mega.replace(/(\$2\$)/g,'container');
							eval(mega);
						}
					}
				}
			}
		}
// 	}
// 	catch(e){}
}

function processCloner(cloner, container)
{
	cloner.id = cloner.id + '__old';
	megaSerialize(cloner, container, 2);
}

function set_innerhtml(node, container)
{
	var rplc = node.getAttribute('replacementHTML');
	if(rplc != undefined)
	{
		var indx = container.getAttribute('destinations_count');
		node.innerHTML = rplc.replace(/(\$1\$)/g,indx);;
	}
}

function set_element_name(node, container)
{
	var rplc = node.getAttribute('replacementName');
	if(rplc != undefined)
	{
		var indx = container.getAttribute('destinations_count');
		node.name = rplc.replace(/(\$1\$)/g,indx);;
	}
}

function set_element_attribute(node, container, attr)
{
	var rplc = node.getAttribute('replacementAttribute');
	if(rplc != undefined)
	{
		var indx = container.getAttribute('destinations_count');
		node.setAttribute(attr, rplc.replace(/(\$1\$)/g,indx));
	}
}

function set_element_attributes(node, container, attrs)
{
	var indx = container.getAttribute('destinations_count');
	attrs = attrs.split('|');
	for(var key = 0; key < attrs.length; key++)
	{
		var rplc = node.getAttribute('replacement'+attrs[key]);
		if(rplc != undefined)
		{
			node.setAttribute(attrs[key], rplc.replace(/(\$1\$)/g,indx));
		}
	}
}

function hide(node)
{
	node.style.display = 'none';
}

function hide_transport_extra(node)
{
	var ord = node.getAttribute('ordinal');
// 	alert($('transportation_'+ord).value);
	if($('transportation_'+ord).value == 'personal_vehicle' || $('transportation_'+ord).value == 'official_vehicle');
	else
		node.style.display = 'none';
}

function show(node, type)
{
	node.style.display = type;
}

function prelazak_hide(node)
{
	if($('country_end').value == $('data[trip]['+node.getAttribute('ordinal')+'][country]').value)
		node.style.display = 'none';
	else
		node.style.display = 'inline';
}

function render_border_crossings()
{
	var destination = $('destinations_add');
	var max = destination.getAttribute('destinations_count');
	for(i = 1; i < max; i++)
	{
		if($('data[trip]['+i+'][country]').value != $('data[trip]['+(i+1)+'][country]').value)
		{
			try
			{
				$('border_date_label_'+i).style.display = 'inline';
				$('border_date_'+i).style.display = 'inline';
				$('border_hour_'+i).style.display = 'inline';
				$('border_min_'+i).style.display = 'inline';
			}catch(e){}
		}
		else
		{
			try
			{
				$('border_date_label_'+i).style.display = 'none';
				$('border_date_'+i).style.display = 'none';
				$('border_hour_'+i).style.display = 'none';
				$('border_min_'+i).style.display = 'none';
			}catch(e){}
		}
	}
	
// 	if($('data[trip][-1][country]').value != $('data[trip]['+max+'][country]').value)
// 	{
// 		$('border_text_'+max).style.display = 'inline';
// 		$('border_date_'+max).style.display = 'inline';
// 		$('border_hour_'+max).style.display = 'inline';
// 		$('border_min_'+max).style.display = 'inline';
// 	}
// 	else
// 	{
// 		$('border_text_'+max).style.display = 'none';
	try{
		$('border_date_'+max).style.display = 'none';
		$('border_hour_'+max).style.display = 'none';
		$('border_min_'+max).style.display = 'none';
	}
	catch(e){}
// 	}
}

var month_days = [31,28,31,30,31,30,31,31,30,31,30,31];
//povezuje datum završetka sa trajanje putovanja <> povezani su funkcijski preko početka putovanja
function connect_duration_and_return(mode)
{
	var start = convToDate($('date_of_departure').value+' '+$('hour_of_departure').value+':'+$('min_of_departure').value+':00'); // pocetak puta
	var duration = parseInt($('date_day_span').value); // trajanje puta
	var end = convToDate($('date_of_return').value+' '+$('hour_of_return').value+':'+$('min_of_return').value+':00'); // kraj puta

	if(mode == 1) // promijenjeno trajanje puta -> moram promijeniti završni datum
	{
		while(duration > 0)
		{
			var poc_mj = parseInt(start.getMonth()) + 1;
			var poc_dan = parseInt(start.getDate());
			var poc_god = parseInt(start.getFullYear());
			if(poc_mj != 2)
				var dim = month_days[(poc_mj - 1)];
			else
			{
				if(poc_god % 4 == 0 && poc_god % 100 != 0)
					var dim = 29;
				else 
					var dim = 28;
			}
			var rest = dim - poc_dan;
			if(rest > duration)
			{
				poc_dan = poc_dan + duration;
				start.setDate(poc_dan);
				end = start;
				$('date_of_return').value = setHRdate(end);
				
				var hor = $('hour_of_return');
				var mor = $('min_of_return');
				var end_hour = end.getHours();
				var end_min = end.getMinutes()
// 				for(var i = 0; i < hor.options.length; i++)
// 					if(hor.options[i].value == end_hour)
// 						hor.options[i].selected = true;
// 				for(var i = 0; i < mor.options.length; i++)
// 					if(mor.options[i].value == end_min)
// 						mor.options[i].selected = true;
				break;
			}
			else
			{
				duration = duration - rest;
				start.setDate(1);
				if(poc_mj < 12)
				{
					start.setMonth(poc_mj);
				}
				else
				{
					poc_god = poc_god + 1;
					start.setMonth(0);
					start.setFullYear(poc_god);
				}
			}
		}
	}
	else // promijenjen završni datum -> promijeni trajanje puta 
	{
		var tmp = end.getTime() - start.getTime();
		var tmp_s = parseInt(tmp / 1000);
		var tmp_d = parseInt(tmp_s / 86400);
		var rem = tmp_s % 86400;
		var tmp_h = parseInt(rem / 3600);
		rem = rem % 3600;
		var tmp_m = parseInt(rem / 60);
// 		rem = rem % 60;
				
		if(isInteger(tmp_d))
			$('date_day_span').value = tmp_d;
		if(isInteger(tmp_h))
			$('date_day_span_hours').value = tmp_h;
		if(isInteger(tmp_m))
			$('date_day_span_mins').value = tmp_m;
	}
	
	if(mode == 1)
		validateInPlace($('order_form'));
}

// prima date object i vraca string sa datumom u hr formatu (samo datum)
function setHRdate(date)
{
	return date.getDate()+'.'+(parseInt(date.getMonth()) + 1)+'.'+date.getFullYear()+'.';
}

function dohvati_dnevnice(url, form)
{
	if(validateInPlace(form, true))
	{
		url += '&ajax=1';
		if (form != undefined && form != null)
			var post_body = get_form_values(form);
		else
			var post_body = '';
	
		new ajax(url, { postBody:post_body, onComplete: prikazi_dnevnice});
	}
}

function dohvati_kilometraze(url, form)
{
// 	if(validateInPlace(form))
// 	{
		url += '&ajax=1';
		if (form != undefined && form != null)
			var post_body = get_form_values(form);
		else
			var post_body = '';
	
		new ajax(url, { postBody:post_body, onComplete: prikazi_kilometraze});
// 	}
}


function prikazi_kilometraze(req)
{
	$('kilometraze_cont').innerHTML = req.responseText;
// 	sumiraj_troskove();
	set_tips();
}

function dohvati_udaljenosti(url, form)
{
// 	if(validateInPlace(form))
// 	{
		url += '&ajax=1';
		if (form != undefined && form != null)
			var post_body = get_form_values(form);
		else
			var post_body = '';
	
		new ajax(url, { postBody:post_body, onComplete: prikazi_udaljenosti});
// 	}
}


function prikazi_udaljenosti(req)
{
	$('udaljenosti_cont').innerHTML = req.responseText;
	sumiraj_troskove();
	set_tips();
}

function prikazi_dnevnice(req)
{
	if($('dnevnice_table_cont'))
	{
		$('dnevnice_table_cont').innerHTML = req.responseText;
		sumiraj_troskove();
	}
}

function promijenjenaDnevnica(field)
{
	validateField(field);
	var country_id = field.getAttribute('country_id');
	var br_dnevnica = field.getAttribute('br_dnevnica');
	var ukupno = $('dnevnice_row_ukupno_'+country_id);
	
	if(ukupno)
	{
		var tmp = money2float(br_dnevnica) * money2float(field.value);
		tmp = tmp.toFixed(2);
// 		alert(parseFloat(tmp, 2, 2));
		ukupno.value = formatAsMoney(tmp);
	}
	sumiraj_troskove();
}

function clearField(field)
{
	var clearVal = field.getAttribute('clearValue');
	field.value = clearVal ? clearVal : '';
}

function sumiraj_troskove()
{
	calculate_totals('car_log_expense', ['input'], $('all_exps_cont'),  $('troskovi_ukupno'), formatAsMoney);
}

function dodaj_trosak()
{
	var clone_me = $('trosak_copy_me');
	var destination = $('troskovi_cont');
	destination.setAttribute('destinations_count', destination.getAttribute('destinations_count')*1+1);	
	var newNode1 = ISclone(destination,clone_me,megaSerialize,processCloner);	
	sumiraj_troskove();
}

function obrisiOstaliTrosak(field)
{
	if(field.value == field.getAttribute('defaultValue'))
		field.value = '';
}

function trosak_dodatna_polja(field)
{
	var ord = field.getAttribute('ordinal');
// 	alert(field.options[field.selectedIndex].getAttribute('descriptive'));
	if(field.options[field.selectedIndex].getAttribute('descriptive') == 'other')
	{
		$('troskovi_ostalo_container_'+ord).style.display = 'inline';
		$('troskovi_reprez_container_'+ord).style.display = 'none';
		
		$('troskovi_ostalo_container_'+ord).value = $('troskovi_ostalo_container_'+ord).getAttribute('defaultValue');
		$('troskovi_reprez_container_'+ord).value = '';
	}
	else if(field.options[field.selectedIndex].getAttribute('descriptive') == 'representation')
	{
		$('troskovi_ostalo_container_'+ord).style.display = 'none';
		$('troskovi_reprez_container_'+ord).style.display = 'inline';
		
		$('troskovi_ostalo_container_'+ord).value = '';
		$('troskovi_reprez_container_'+ord).value = $('troskovi_reprez_container_'+ord).getAttribute('defaultValue');
	}
	else
	{
		$('troskovi_ostalo_container_'+ord).style.display = 'none';
		$('troskovi_reprez_container_'+ord).style.display = 'none';
		
		$('troskovi_ostalo_container_'+ord).value = '';
		$('troskovi_reprez_container_'+ord).value = '';
	}
}

function ukloni_trosak(field)
{
	var ord = field.getAttribute('ordinal');
	var cont = $('troskovi_cont');
	var els = cont.getElementsByTagName('table');
// 	alert(ord);
	if(els.length < 2)
	{
		var last_ord = els[0].getAttribute('ordinal');
		$('expense_tip_'+last_ord).selectedIndex = 0;
		$('troskovi_ostalo_container_'+last_ord).style.display = 'none';
		$('troskovi_reprez_container_'+last_ord).style.display = 'none';
		$('expense_amount_'+last_ord).value = $('expense_amount_'+last_ord).getAttribute('clearValue');
	}
	else
	{
		for(var i = 0; i < els.length; i++)
		{
			var t = els[i].getAttribute('ordinal');
	// 		alert(t);
			if(t == ord)
			{
				cont.removeChild(els[i]);
				break;
			}
		}
	}
	sumiraj_troskove();
}

function transportation_extra_fields(field)
{
	var ord = field.getAttribute('ordinal');
	
	if(field.value == 'official_vehicle')
	{
		$('licence_plate_'+ord).style.display = 'inline';
		$('licence_plate_label_'+ord).style.display = 'inline';
		$('marka_vozila_'+ord).style.display = 'inline';
		$('marka_vozila_label_'+ord).style.display = 'inline';
		$('udaljenost_cont_'+ord).style.display = 'none';
	}
	else
		if(field.value == 'personal_vehicle')
		{
			$('licence_plate_'+ord).style.display = 'inline';
			$('licence_plate_label_'+ord).style.display = 'inline';
			$('marka_vozila_'+ord).style.display = 'inline';
			$('marka_vozila_label_'+ord).style.display = 'inline';
			$('udaljenost_cont_'+ord).style.display = __ie ? 'block' : 'table-row';
		}
		else
		{
			$('licence_plate_'+ord).style.display = 'none';
			$('licence_plate_label_'+ord).style.display = 'none';
			$('marka_vozila_'+ord).style.display = 'none';
			$('marka_vozila_label_'+ord).style.display = 'none';
			$('udaljenost_cont_'+ord).style.display = 'none';
		}
}

function zbroji_redak_kilometraze(field)
{
	var indx = field.getAttribute('index');
	var from = field.value;
	var udaljenost = parseInt(field.getAttribute('udaljenost'));
// 	alert(typeof(udaljenost))
	if(isPositiveInteger(udaljenost, false))
	{
// 		alert(udaljenost);
		var to = $('km_to_'+indx);
		to.value= parseInt(from) + udaljenost;
	}
}

function zbroji_redak_udaljenosti(field)
{
	validateField(field);
	var indx = field.getAttribute('index');
	var kms = field.getAttribute('udaljenost');
	var unit_price = money2float(field.value);
	var ukupno = $('udalj_ukupno_'+indx);
	ukupno.value = formatAsMoney(kms * unit_price);
	sumiraj_troskove();
}

function predlozi_udaljenost(field, url)
{
	var ordinal = parseInt(field.getAttribute('ordinal'));
	var prev = (ordinal-1);
	if(prev == -2)
	{
		prev = $('destinations_add').getAttribute('destinations_count');
	}
// 	alert(prev);
	var to = field.value;
	var to_c = $('data[trip][' + ordinal + '][country]').value;
	var from_fld = $('trip_city_'+prev);
	var from = from_fld.value;
	var from_c = $('data[trip][' + prev + '][country]').value
	var transp = $('transportation_'+prev);
	if(transp.value == 'personal_vehicle')
	{
		url += '&ajax=1&from='+from+'&to='+to+'&ordinal='+prev+'&from_c='+from_c+'&to_c='+to_c;
	
		new ajax(url, { onComplete: prikazi_predlozenu_udaljenost});
	}
}	

function prikazi_predlozenu_udaljenost(req)
{
	var resp = req.responseText;
	var data = resp.split(',');
	var ord = data[0];
	var kms = data[1];
	if(kms)
	{
		var field = $('udaljenost_'+ord);
		if(field.value == '')
		{
			field.value = kms;
		}
	}
}

function connect_akontacije(field, type)
{
	if(type == 1)
	{
		var other = $('akontacija');
		var amnt = money2float(field.value);
		field.value = formatAsMoney(amnt);
		amnt = amnt*1
		if(amnt < 0)
		{
			amnt = amnt * (-1);
			amnt = formatAsMoney(amnt.toFixed(2));
			field.value = amnt;
		}
		else
		{
			amnt = formatAsMoney(amnt.toFixed(2));
		}
		other.value = amnt;
	}
	else
	{
		var other = $('akontacija_troskovi');
		var amnt = money2float(field.value);
// 		alert(amnt);
		field.value = formatAsMoney(amnt);
		amnt = amnt*1;
		if(amnt < 0)
		{
			amnt = amnt * (-1);
			var amnt = formatAsMoney(amnt.toFixed(2));
			field.value = amnt;
		}
		else
		{
			amnt = formatAsMoney(amnt.toFixed(2));
		}
		other.value = amnt;
	}
	sumiraj_troskove();
}

function change_prev_title(node, container, level)
{
	var ord = node.getAttribute('ordinal');
	ord = ord - 1;
	$('transportation_'+ord).title = 'Prijevoz između odredišta';
}

function set_transportation_choice(node)
{
	var ord = node.getAttribute('ordinal');
	var prev = ord - 1;
	var set = $('transportation_'+prev).value;
	for(var i = 0; i < node.options.length; i++)
		if(node.options[i].value == set)
			node.selectedIndex = i;
}

function copy_vehicle_data(field)
{
	var ord = field.getAttribute('ordinal');
	var i = ord-1;
	$('transportation_'+ord).selectedIndex = $('transportation_'+i).selectedIndex;
	try
	{
		$('marka_vozila_'+ord).value = $('marka_vozila_'+i).value;
		$('licence_plate_'+ord).value = $('licence_plate_'+i).value;	
		transportation_extra_fields($('transportation_'+ord));
	}
	catch(e){}
}

function connect_depart_and_return(field)
{
	var do_change = field.getAttribute('change_return_city');
	if(do_change == 1)
		$('return_city').value = field.value;
}

function check_if_depart_and_return_are_same(field)
{
	field.setAttribute('change_return_city', $('return_city').value == field.value ? 1 : 0);	
}