﻿
function isBrowserIE() { if (document.all) { return true; } }

function switchTree(treeID) {
	var node = document.getElementById('node'+treeID);
	if (node.className.indexOf('minus') > -1) {
		rollTree(treeID);
	} else {
		unrollTree(treeID);
	}
}

function rollTree(treeID) {
	hideElement('tree'+treeID);
	document.getElementById('node'+treeID).className = 'plus';
}
function unrollTree(treeID) {
	showElement('tree'+treeID);
	document.getElementById('node'+treeID).className = 'minus';
}

function confirmLink(href, message) {
	var confirmBox = confirm(message);
	if (confirmBox) { location = href; }
}

function confirmForm(formId, message) {
	confirmBox = confirm(message);
	if (confirmBox) document.getElementById(formId).submit();
}
	
function getDisplayType(el) {
	var tag = el.tagName.toLowerCase() ;
	var displayType = '';
	
	if (isBrowserIE()) { displayType = 'block'; }
	else {
		switch (tag) {
			case 'tr': displayType = 'table-row'; break;
			case 'tbody':
			case 'thead':
			case 'tfoot': displayType = 'table-row-group'; break;
			case 'table': displayType = 'table'; break;
		}
	}
	
	return displayType;
}

function hideElement(eid) {
	document.getElementById(eid).style.display = 'none';
}

function showElement(eid) {
	var el = document.getElementById(eid);
	var displayType = getDisplayType(el);
	el.style.display = displayType;
}

function toggleElement(eid) {
	var el = document.getElementById(eid);
	if(el.style.display == 'none'){showElement(eid);}else hideElement(eid);
}

function addElement(parentId, tagName, elementId, name, value, type) {
	var parent = document.getElementById(parentId);
	var newElement = document.createElement(tagName);
	newElement.setAttribute('id', elementId);
	if (type != '') newElement.setAttribute('type', type);
	if (value != '') newElement.setAttribute('value', value);
	if (name != '') newElement.setAttribute('name', name);
	parent.appendChild(newElement);
}

function focusElement(eid) {
	document.getElementById(eid).focus();
}
	
function unCheckElement(eid) { document.getElementById(eid).checked=false; }

function checkElement(eid) { document.getElementById(eid).checked=true; }

function switchCheckElement(eid) { var obj = document.getElementById(eid); if (obj.checked) unCheckElement(eid); else checkElement(eid)};

function copyInputValue(to, from) {
	document.getElementById(to).value = document.getElementById(from).value;
}

function setInputValue(eid, value) { document.getElementById(eid).value = value; }

function isChecked(eid) { if (document.getElementById(eid).checked || document.getElementById(eid).checked == 'true') return 1; return 0; } 

function removeElement(parentId, elementId) { var parent = document.getElementById(parentId); var element = document.getElementById(elementId); parent.removeChild(element); }

function inputCheck(inputId, parentId, tagName, elementId, name, value, type) { var input = document.getElementById(inputId); if (input.checked == true) { addElement(parentId, tagName, elementId, name, value, type); } else { removeElement(parentId, elementId); } }

function enableElement(elementId) { document.getElementById(elementId).disabled = false; }

function disableElement(elementId) { document.getElementById(elementId).disabled = true; }

function enableAll(options) { for(var i=0; i < options.length; i++) { options[i].style.color = 'black'; } }

function disableSelectedOnOther(select, otherSelect) { var index = select.selectedIndex; otherSelect[index].style.color = 'white'; }

function selectAll(options) { for(var i=0; i < options.length; i++) { options[i].selected = true; } }

function clearSelect(elementId) { var element = document.getElementById(elementId); element.options.selectedIndex = 0; }

function clearInput(elementId) { var element = document.getElementById(elementId); element.value = ''; }

function copySelectedIndex(fromId, toId) { var from = document.getElementById(fromId); var to = document.getElementById(toId); to.options.selectedIndex = from.options.selectedIndex; }

function move(fbox, tbox) {
	var arrFbox = new Array();
	var arrTbox = new Array();
	var arrLookup = new Array();
	var i;
	
	for (i = 0; i < tbox.options.length; i++) {
		arrLookup[tbox.options[i].text] = tbox.options[i].value;
		arrTbox[i] = tbox.options[i].text;
	}
	
	var fLength = 0;
	var tLength = arrTbox.length;
	
	for(i = 0; i < fbox.options.length; i++) {
		arrLookup[fbox.options[i].text] = fbox.options[i].value;
		if (fbox.options[i].selected && fbox.options[i].value != "") {
			arrTbox[tLength] = fbox.options[i].text;
			tLength++;
		} else {
			arrFbox[fLength] = fbox.options[i].text;
			fLength++;
	   }
	}
	
	arrFbox.sort();
	arrTbox.sort();
	fbox.length = 0;
	tbox.length = 0;

	var c;

	for(c = 0; c < arrFbox.length; c++) {
		var no = new Option();
		no.value = arrLookup[arrFbox[c]];
		no.text = arrFbox[c];
		fbox[c] = no;
	}

	for(c = 0; c < arrTbox.length; c++) {
		var no = new Option();
		no.value = arrLookup[arrTbox[c]];
		no.text = arrTbox[c];
		tbox[c] = no;
   }
}

function copySelect(fbox, tbox) {
	var arrFbox = new Array();
	var arrTbox = new Array();
	var arrLookup = new Array();
	var i;
	
	for (i = 0; i < tbox.options.length; i++) {
		arrLookup[tbox.options[i].text] = tbox.options[i].value;
		arrTbox[i] = tbox.options[i].text;
	}
	
	var fLength = 0;
	var tLength = arrTbox.length;
	
	for(i = 0; i < fbox.options.length; i++) {
		arrLookup[fbox.options[i].text] = fbox.options[i].value;
		if (fbox.options[i].selected && fbox.options[i].value != "") {
			arrTbox[tLength] = fbox.options[i].text;
			tLength++;
		} else {
			arrFbox[fLength] = fbox.options[i].text;
			fLength++;
	   }
	}
	
	arrFbox.sort();
	arrTbox.sort();
	fbox.length = 0;
	tbox.length = 0;

	var c;

	for(c = 0; c < arrFbox.length; c++) {
		var no = new Option();
		no.value = arrLookup[arrFbox[c]];
		no.text = arrFbox[c];
		fbox[c] = no;
	}

	for(c = 0; c < arrTbox.length; c++) {
		var no = new Option();
		no.value = arrLookup[arrTbox[c]];
		no.text = arrTbox[c];
		tbox[c] = no;
   }
}

var formError = "";

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function showFormErrors() { alert('W formularzu występują błędy. Wszystkie błędne pola są wyróżnione czerwonym tłem. Popraw dane i spróbuj ponownie.' + '\n\nBłędy:\n\n' + formError); formError = '' }

function checkForm(inputID, inputName, type, checkID, inputID2, empty) {
	var obj = document.getElementById(inputID); var obj2 = document.getElementById(inputID2); var blad = false;
	obj.value = trim(obj.value);
	var reg = '';
	if (checkID != 'true') { var checkObj = document.getElementById(checkID); if (checkObj.checked != true) { return true; } }
	switch (type) {
		case 'email':  if (empty && !obj.value.length) {} else { var reg =/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9_\-])+\.)+([a-zA-Z0-9]{2,10})+$/; if (!reg.test(obj.value)) { formError += "Adres email jest nieprawodłowy.\n"; blad = true; } } break;
		case 'password': if (obj.value.length < 5) { formError += "Hasło nie ma wymaganej ilości znaków.\n"; blad = true; } break;
		case 'citycode': reg = /^\d{2}(-)\d{3}$/; if (obj.value.search(reg) == -1) { formError += "Kod pocztowy ma nieprawidłowy format.\n"; blad = true; } break;
		case 'date': reg = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/; if (obj.value.search(reg) == -1) { formError += 'Format daty ' + inputName + ' jest nieprawidłowy.\n'; blad = true; } break;
		case 'nip':
			if ( !obj.value.match( /^[0-9]{3}-[0-9]{2}-[0-9]{2}-[0-9]{3}$/ ) && !obj.value.match( /^[0-9]{3}-[0-9]{3}-[0-9]{2}-[0-9]{2}$/ ) && !obj.value.match( /^[0-9]{10}$/ ) )
				{ formError += "Nip jest nieprawidłowy."; blad = true; };
			var my_nums = obj.value.replace(/-/g,'');
			var valid_nums = "657234567";
			var sum=0;
			for (var temp=8;temp>=0;temp--)
				sum += (parseInt(valid_nums.charAt(temp)) * parseInt(my_nums.charAt(temp)));
			if ( !((sum % 11) == 10 ? false : ((sum % 11) == parseInt(my_nums.charAt(9))) ) ) { formError += "NIP jest nieprawidłowy.\n"; blad = true; } break;
		case 'empty': if (!obj.value.length) { formError += "Pole " + inputName + " nie zostało wypełnione.\n"; blad = true; } break;
		case 'selected': if (obj.options.selectedIndex == 0) { formError += "Nie wybrano żadnej opcji z listy " + inputName +".\n"; blad = true; } break;
		case 'checked': if (obj.checked) {return true;} else { formError += "Nie zaznaczono pola: " + inputName + ".\n"; return false;}
		case 'selectedAndDifferent': if (obj.options.selectedIndex == obj2.options.selectedIndex) { formError += "Wybrane w obu listach opcje nie mogą się powtarzać!\n"; blad=true; } break; 
	}
	if (blad == true) { obj.style.backgroundColor = '#FFBBBB'; return false; } else { obj.style.backgroundColor = 'white'; return true; }
}

function isElementEmpty(eid) {
	return (document.getElementById(eid).value == '');
}

function freeFromInput(inputId) {
	document.getElementById(inputId).style.backgroundColor = 'white';
}

function openPopUp(title, url) {
	var newWindow = window.open(url, title, 'width=800, height=600, status=no, resizable=yes');
	newWindow.focus();
}

function checkAll(field) {
	var obj = document.getElementsByName(field);
	for (j=0; j < obj.length; j++ )
			obj[j].checked = true ;
}

function uncheckAll(field) {
	var obj = document.getElementsByName(field);
	for (j=0; j < obj.length; j++ )
			obj[j].checked = false ;
}

function reverseAll(field) {
	var obj = document.getElementsByName(field);
	for (i = 0; i < obj.length; i++) {
		if (obj[i].checked == false) {
			obj[i].checked = true;
		} else {
			obj[i].checked = false;
		}
	}
}
