//********************zmienne globalne wykorzystywane w kalkulacji
var idDymek = 0;
var tuLista = Array();
var grupyParametrow = Array();

var ldrSmall = new Image();
ldrSmall.src = '/img/new/ldr-small.gif';
//********************funckjce pomocnicze***********************

function getDateResult(parametr, krok) {
	var data = '';
	data = document.getElementById(parametr+"_y").value+'-';
	if(krok != 'y') {
		data += document.getElementById(parametr+"_m").value+'-';
		if(krok == 'd') {
			data += document.getElementById(parametr+"_d").value+' ';
		} else data += '1 ';
	} else data += '1-';
	return data += '00:00:00';
}
 
function getSelectedCheckBox(pole, prefix, oblicz) {
	var resp = '';
	var i = 0;
	for(a in pole.childNodes) {
		if((pole.childNodes[a].type == 'checkbox') && pole.childNodes[a].checked) {
			resp = resp+"\""+i+"\" : \""+pole.childNodes[a].id.substr(prefix.length)+"\", ";
			i++;
		}
	}
	resp = "{\""+prefix+"\" : {"+resp.substr(0, resp.length-2)+"} }";
	if(oblicz) makeRequest(resp); 
	return;
}

function getSelectedRadio(pole, prefix, oblicz) {
	var resp = '';
	var i = 0;
	var a = null;
	for(a in pole.childNodes) {
		if((pole.childNodes[a] != null) && (pole.childNodes[a].type != null) && (pole.childNodes[a].type == 'radio') && pole.childNodes[a].checked) {
			resp = pole.childNodes[a].id.substr(prefix.length);
			break;
			i++;
			
		}
	}
	if(oblicz) {
		makeRequest("{\""+prefix+"\" : \""+resp+"\"}");
		return resp;
	}
	else return resp;
}

function splitDate(isoData) {
	var data = new Array();
	return data.concat((isoData.split(' ')[0]).split('-'),(isoData.split(' ')[1]).split(':'));
}

function dymek(id, tresc) {
	var pole = document.getElementById(id);
	if (pole != null) {
		if (pole.addEventListener != null && !(/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent))) {//ff
			pole.addEventListener("mouseover", function(event) {dymek_dom('wierszid_'+idDymek, idDymek, event, tresc, true);}, true);
			pole.addEventListener("mousemove", function(event) {dymek_dom('wierszid_'+idDymek, idDymek, event, tresc, true);}, true);
			pole.addEventListener("mouseout", function (event) {dymek_out(idDymek);}, true);
		} else {
			pole.attachEvent("onmouseover", function(event) {dymek_dom('wierszid_'+idDymek, idDymek, event, tresc, true);});
			pole.attachEvent("onmousemove", function(event) {dymek_dom('wierszid_'+idDymek, idDymek, event, tresc, true);});
			pole.attachEvent("onmouseout", function(event) {dymek_out(idDymek);});
		}
		idDymek++;
	}
}

function loader(param) {
	var loader = document.createElement('img');
	loader.id = param+'loader';
	loader.style.display = 'none';
	loader.style.verticalAlign = 'middle';
	loader.style.marginRight = '5px';
	loader.src = '/img/new/ldr-small.gif';
	loader.style.marginLeft = '20px';
	return loader;
}

//***************funkcje do rysowania kontrolek********************

function createGroup(id, header) {
	if ($(id) != null) return;
	var grupa = document.createElement('div');
	grupa.id = id;
	grupa.setAttribute("className", 'grupa');
	grupa.setAttribute("class", 'grupa');
	var h3 = document.createElement('h3');
	h3.appendChild(document.createTextNode(header));
	grupa.appendChild(h3)
	$('parametry').appendChild(grupa);
}

function createP(id, klasa, tekst) {
	var text = document.createElement('p');
	if(id != null) text.id = id;
	text.setAttribute("className", klasa);
	text.setAttribute("class", klasa); 
	text.appendChild(document.createTextNode(tekst));
	return text;
}

function createSpan(id, klasa, tekst) {
	var text = document.createElement('span');
	if(id != null) text.id = id;
	if (klasa == null) klasa = 'pgx_formfieldtext';
	text.setAttribute("className", klasa);
	text.setAttribute("class", klasa); 
	text.appendChild(document.createTextNode(tekst));
	return text;
}

function createBr() {
	return document.createElement('br');
}	

function createLoader() {
	for (var i = 0; i < tuLista.length; i++) {
		var t = document.getElementById('kwota'+tuLista[i]);
		if (t != null) {
			removeAll(t);
			var img = document.createElement('img');
			img.src = '/img/new/ldr-small.gif';
			img.style.marginLeft = '20px';
			t.appendChild(img); 
		}
	}
	//alert('create loader');
}

function removeLoader(grupa) {
	if (grupa == 'wszystko') {
		for (x in grupyParametrow) {
			var p = document.getElementById('divloader'+grupyParametrow[x]);
			if (p != null)
				p.parentNode.removeChild(p);
		}
		var p = document.getElementById('divloader');
		if (p != null)
			p.parentNode.removeChild(p);
		
	}
	if (grupa != null) 
		var id = 'divloader'+grupa;
	else var id = 'divloader';
	var pole = document.getElementById(id);
	if (pole != null) {
		pole.parentNode.removeChild(pole);
	}
	//alert('remove loader');
	return;
}

function createField(nazwa, klasa, parent, naglowek) {
	var parentid = '';
	if (parent == null) 
		parentid = 'parametry'; 
	else {
		parentid = parent;
		if(document.getElementById(parentid) == null) {
			var grupa = createField(parentid, "grupaparametrow");
			if (naglowek == null) var h = "Parametry ubezpieczenia"; else var h = naglowek
			var t = createField(null, 'naglowekgrupyparametrow');
			var h3 = t.appendChild(document.createElement('h3'));
			h3.appendChild(document.createTextNode(h));
			//t.appendChild(document.createTextNode(h));
			grupa.appendChild(t);
		}
	} 
	prm = document.getElementById(parentid);
	d = document.createElement('div');
	d.id = nazwa;
	prm.appendChild(d);
	
	if(klasa == null) {
		d.setAttribute("class", "parametr");
		d.setAttribute("className", "parametr");
	} else {
		d.setAttribute("class", klasa);
		d.setAttribute("className", klasa);
	}
	return d;
}

function createSelectField(parametry, oblicz) {
	
	if(parametry.wylacznie != null) {
		var parentid = parametry.wylacznie['grupa'];
		var parentheader = parametry.wylacznie['opis'];
	} else {
		var parentid = 'podstawoweparametry';
		var parentheader = 'Parametry wymagane';
	}
	if ($(parentid) == null) {
		createGroup(parentid, parentheader);
	}
	//pole.style.border='1px solid black';
	var inp = document.createElement('select');
	var index = null;
	inp.id = parametry.parametr;
	var index = 0;
	inp.options.length = 0;
	//wypełniam combo wartościami
	for(a in parametry.parametry) {
		inp.options[index++] = new Option(parametry.parametry[a],a);
		if(a == parametry.wartosc) { inp.selectedIndex = index-1;}
	}
	if (parametry.onchange != null)
		var f = new Function(parametry.onchange);
	inp.onchange = function() {if (f != null) f(); if(true) makeRequest("{\""+parametry.parametr+"\" : \""+inp.value+"\"}");}
	//rysuje tekst kontrolki, opis, blad...
	//wyświetlany tekst
	var tabela = document.createElement('table'); 
	tabela.id = 'div'+parametry.parametr;
	$(parentid).appendChild(tabela);
	tabela.setAttribute('class', 'pole');
	tabela.setAttribute('className', 'pole');
	tabela.onmouseover = function() {poleMouseOver(tabela);} 
	tabela.onmouseout = function() {poleMouseOut(tabela);}
	var r = tabela.insertRow(0);
	//pole.appendChild(tabela);
	var lewy = r.insertCell(0);
	lewy.setAttribute('class', 'tytul');
	lewy.setAttribute('className', 'tytul');
	//lewy.style.border='1px solid green';
	var prawy = r.insertCell(1);
	prawy.setAttribute('class', 'tresc');
	prawy.setAttribute('className', 'tresc');
	//prawy.style.border='1px solid red';
	var label = document.createElement('label');
	label.setAttribute('for', parametry.parametr);
	label.appendChild(document.createTextNode(parametry['opis']['text']+':'));
	lewy.appendChild(label);
	if (parametry['opis']['hint'] != null) {
		var hint = document.createElement('div');
		hint.id = 'div'+parametry.parametr+'_hint';
		hint.appendChild(document.createTextNode(parametry['opis']['hint']));
		hint.style.display = 'none';
		$('kalkulator_hint').appendChild(hint);
	} else {
		addClass(tabela, 'bez_hinta');
	}
	if (parametry['opis']['opis'] != null) {
		var opis = document.createElement('div');
		opis.setAttribute('class', 'opis');
		opis.setAttribute('className', 'opis');
		opis.appendChild(document.createTextNode(parametry['opis']['opis']));
		lewy.appendChild(opis);
		//lewy.appendChild(createP(null, "parametropis", parametry['opis']['opis']));
	}
	prawy.appendChild(inp);
	prawy.appendChild(loader(parametry.parametr));
	//treść błędu
	var blad = document.createElement('div');
	blad.id = 'blad_'+parametry.parametr;
	blad.setAttribute('class', 'blad_pole l');
	blad.setAttribute('className', 'blad_pole l');
	prawy.appendChild(blad);
	
	if (f != null) f();
	//po utworzeniu kontrolki wywołuję requesta jeśli nie jest zaznaczone pole domyślne
	if((oblicz)) makeRequest("{\""+parametry.parametr+"\" : \""+inp.value+"\"}");
	return;
}

function createZipCodeField(parametry, oblicz) {
	if(parametry.wylacznie != null) {
		var parentid = parametry.wylacznie['grupa'];
		var parentheader = parametry.wylacznie['opis'];
	} else {
		var parentid = 'podstawoweparametry';
		var parentheader = 'Parametry wymagane';
	}
	if ($(parentid) == null) {
		createGroup(parentid, parentheader);
	}
	var tabela = document.createElement('table');
	tabela.id = 'div'+parametry.parametr;
	$(parentid).appendChild(tabela);
	//pole.style.border='1px solid black';
	tabela.setAttribute('class', 'pole');
	tabela.setAttribute('className', 'pole');
	//tabela.style.border='1px solid blue';
	tabela.onmouseover = function() {poleMouseOver(tabela);} 
	tabela.onmouseout = function() {poleMouseOut(tabela);}
	var r = tabela.insertRow(0);
	//pole.appendChild(tabela);
	var lewy = r.insertCell(0);
	lewy.setAttribute('class', 'tytul');
	lewy.setAttribute('className', 'tytul');
	//lewy.style.border='1px solid green';
	var prawy = r.insertCell(1);
	prawy.setAttribute('class', 'tresc');
	prawy.setAttribute('className', 'tresc');
	//prawy.style.border='1px solid red';
	var label = document.createElement('label');
	label.setAttribute('for', parametry.parametr);
	label.appendChild(document.createTextNode(parametry['opis']['text']+':'));
	lewy.appendChild(label);
	if (parametry['opis']['hint'] != null) {
		var hint = document.createElement('div');
		hint.id = 'div'+parametry.parametr+'_hint';
		hint.appendChild(document.createTextNode(parametry['opis']['hint']));
		hint.style.display = 'none';
		$('kalkulator_hint').appendChild(hint);
	} else {
		addClass(tabela, 'bez_hinta');
	}
	if(parametry['opis']['opis'] != null) {
		var opis = document.createElement('div');
		opis.setAttribute('class', 'opis');
		opis.setAttribute('className', 'opis');
		opis.appendChild(document.createTextNode(parametry['opis']['opis']));
		lewy.appendChild(opis);
		//lewy.appendChild(createP(null, "parametropis", parametry['opis']['opis']));
	}
	var inp = document.createElement('input');
	inp.style.width = '50px';
	inp.setAttribute('type', 'text');
	inp.setAttribute('class', 'pgx_input');
	inp.setAttribute('className', 'pgx_input');
	inp.style.textAlign = 'right';
	if(parametry.wartosc != null) { 
		inp.setAttribute('value', parametry.wartosc); 
		inp.style.color = '#008000'; 
	}
	inp.id = parametry.parametr;
	prawy.appendChild(inp);
	prawy.appendChild(loader(parametry.parametr));
	if (parametry['opis']['postfix'] != null) {
		inp.style.marginRight = '3px';
		prawy.appendChild(document.createTextNode(' '+parametry['opis']['postfix']));
	}
	
	//treść błędu
	var blad = document.createElement('div');
	blad.id = 'blad_'+parametry.parametr;
	blad.setAttribute('class', 'blad_pole l');
	blad.setAttribute('className', 'blad_pole l');
	prawy.appendChild(blad);
	
	inp.onchange = function() { sprawdzKod(parametry.parametr);}
	inp.onkeyup = function() { sprawdzKod(parametry.parametr); makeDelayRequest(1, tabela.id, "{\""+parametry.parametr+"\" : \""+inp.value+"\"}"); return;}
	
	if (oblicz) makeRequest("{\""+parametry.parametr+"\" : \""+inp.value+"\"}");
	return;
}

function createCheckBoxField(parametry, oblicz) {
	if(parametry.wylacznie != null) {
		var parentid = parametry.wylacznie['grupa'];
		var parentheader = parametry.wylacznie['opis'];
	} else {
		var parentid = 'podstawoweparametry';
		var parentheader = 'Parametry wymagane';
	}
	if ($(parentid) == null) {
		createGroup(parentid, parentheader);
	}
	var tabela = document.createElement('table');
	tabela.id = 'div'+parametry.parametr;
	$(parentid).appendChild(tabela);
	tabela.setAttribute('class', 'pole');
	tabela.setAttribute('className', 'pole');
	tabela.onmouseover = function() {poleMouseOver(tabela);} 
	tabela.onmouseout = function() {poleMouseOut(tabela);}
	var r = tabela.insertRow(0);
	//pole.appendChild(tabela);
	var lewy = r.insertCell(0);
	lewy.setAttribute('class', 'tytul');
	lewy.setAttribute('className', 'tytul');
	var prawy = r.insertCell(1);
	prawy.setAttribute('class', 'tresc');
	prawy.setAttribute('className', 'tresc');
	
	var inp = document.createElement('input');
	inp.setAttribute('type', 'checkbox');
	inp.id = parametry.parametr;
	if(parametry.wartosc != null) inp.checked = parametry.wartosc;
	inp.onclick = function() {makeRequest("{\""+parametry.parametr+"\" : \""+inp.checked+"\"}");}
	var label = document.createElement('label');
	label.setAttribute('for', parametry.parametr);
	label.appendChild(document.createTextNode(parametry['opis']['text']+':'));
	lewy.appendChild(label);
	//dodaje dymek
	if (parametry['opis']['hint'] != null) {
		var hint = document.createElement('div');
		hint.id = 'div'+parametry.parametr+'_hint';
		hint.appendChild(document.createTextNode(parametry['opis']['hint']));
		hint.style.display = 'none';
		$('kalkulator_hint').appendChild(hint);
	} else {
		addClass(tabela, 'bez_hinta');
	}
	//dodaje opis
	if(parametry['opis']['opis'] != null) {
		var opis = document.createElement('div');
		opis.setAttribute('class', 'opis');
		opis.setAttribute('className', 'opis');
		opis.appendChild(document.createTextNode(parametry['opis']['opis']));
		lewy.appendChild(opis);
		//lewy.appendChild(createP(null, "parametropis", parametry['opis']['opis']));
	}
	prawy.appendChild(inp);
	prawy.appendChild(loader(parametry.parametr));
	
	//treść błędu
	var blad = document.createElement('div');
	blad.id = 'blad_'+parametry.parametr;
	blad.setAttribute('class', 'blad_pole l');
	blad.setAttribute('className', 'blad_pole l');
	prawy.appendChild(blad);
	
	//pole.appendChild(tabela);
	if(oblicz) makeRequest("{\""+parametry.parametr+"\" : \""+inp.checked+"\"}");
	return;
}

function createFloatField(parametry, oblicz) {
	if(parametry.wylacznie != null) {
		var parentid = parametry.wylacznie['grupa'];
		var parentheader = parametry.wylacznie['opis'];
	} else {
		var parentid = 'podstawoweparametry';
		var parentheader = 'Parametry wymagane';
	}
	if ($(parentid) == null) {
		createGroup(parentid, parentheader);
	}
	var tabela = document.createElement('table');
	tabela.id = 'div'+parametry.parametr;
	$(parentid).appendChild(tabela);
	tabela.setAttribute('class', 'pole');
	tabela.setAttribute('className', 'pole');
	tabela.onmouseover = function() {poleMouseOver(tabela);} 
	tabela.onmouseout = function() {poleMouseOut(tabela);}
	var r = tabela.insertRow(0);
	//pole.appendChild(tabela);
	var lewy = r.insertCell(0);
	lewy.setAttribute('class', 'tytul');
	lewy.setAttribute('className', 'tytul');
	var prawy = r.insertCell(1);
	prawy.setAttribute('class', 'tresc');
	prawy.setAttribute('className', 'tresc');
	var label = document.createElement('label');
	label.setAttribute('for', parametry.parametr);
	label.appendChild(document.createTextNode(parametry['opis']['text']+':'));
	lewy.appendChild(label);
	if (parametry['opis']['hint'] != null) {
		var hint = document.createElement('div');
		hint.id = 'div'+parametry.parametr+'_hint';
		hint.appendChild(document.createTextNode(parametry['opis']['hint']));
		hint.style.display = 'none';
		$('kalkulator_hint').appendChild(hint);
	} else {
		addClass(tabela, 'bez_hinta');
	}
	
	if(parametry['opis']['opis'] != null) {
		var opis = document.createElement('div');
		opis.setAttribute('class', 'opis');
		opis.setAttribute('className', 'opis');
		opis.appendChild(document.createTextNode(parametry['opis']['opis']));
		lewy.appendChild(opis);
	}
	var inp = document.createElement('input');
	inp.setAttribute('type', 'text');
	inp.setAttribute('class', 'pgx_input');
	inp.setAttribute('className', 'pgx_input');
	inp.style.textAlign = 'right';
	if(parametry.wartosc != null) { 
		inp.setAttribute('value', parametry.wartosc); 
		inp.style.color = '#008000'; 
	}
	inp.id = parametry.parametr;
	prawy.appendChild(inp);
	
	//postfix dla "ładnie sformatowanej postaci";
	var postfix = '';
	
	if (parametry['opis']['postfix'] != null) {
		if (!parametry['opis']['czyOpis']) {//
			inp.style.marginRight = '3px';
			prawy.appendChild(document.createTextNode(' '+parametry['opis']['postfix']));
		} else {
			postfix = ' '+parametry['opis']['postfix'];
		}
	}
	prawy.appendChild(loader(parametry.parametr));

	//span dla liczby wyświetlanej za kontrolką, która jest ładnie sformatowana
	var skrypt = '';//wypełnianie
	if (parametry['opis']['czyOpis']) {
		var opis = document.createElement('span');
		opis.id = parametry.parametr+'_opis';
		opis.setAttribute('class', 'opis');
		opis.setAttribute('className', 'opis');
		prawy.appendChild(opis);
		skrypt = 'liczbaUpdate('+parametry.parametr+', '+postfix+');';
		liczbaUpdate(parametry.parametr, postfix);
	}
	//treść błędu
	var blad = document.createElement('div');
	blad.id = 'blad_'+parametry.parametr;
	blad.setAttribute('class', 'blad_pole l');
	blad.setAttribute('className', 'blad_pole l');
	prawy.appendChild(blad);
	
	inp.onchange = function() { 
		inputNumberCheck(parametry.parametr, parametry.fract, parametry.min, parametry.max); 
		if (parametry['opis']['czyOpis']) {
			liczbaUpdate(parametry.parametr, postfix);
		}
	}
	
	inp.onkeyup = function() {
		inputNumberCheck(parametry.parametr, parametry.fract, parametry.min, parametry.max); 
		if (parametry['opis']['czyOpis']) {
			liczbaUpdate(parametry.parametr, postfix);
		}
		makeDelayRequest(1, tabela.id, "{\""+parametry.parametr+"\" : \""+inp.value+"\"}"); 
		return;
	}
	
	if (oblicz) makeRequest("{\""+parametry.parametr+"\" : \""+inp.value+"\"}");
	return;
}

/**	Rysuje przycisk robiący submita dla danego parametru.
*	Metoda ma podpiąc pod dany parametr przycisk do wymuszania obliczeń (makerequest()). 
*	
*/
function createSubmitButton(parametr, parent_id) {
	b = document.createElement('div');
	b.id = parametr+'_submit';
	b.style.textAlign = 'right';
	l = document.createElement('a');
	l.innerHTML = 'następny parametr >>';
	//l.onclick = function() { makeRequest(tresc); return false;}
	b.appendChild(l);
	var parent = document.getElementById(parent_id);
	parent.appendChild(b);
	return l;
}

function removeAll(control) {
	if (control != null && control.childNodes != null) {
		while (control.childNodes.length > 0) {
			control.removeChild(control.childNodes[0]);
		} 
	}
}