var SelectTransform = function() {
	this.classSelect = "select";
	this.classOptions = "options";
	this.classContainer = "container";
}

var SelectTransform2 = function() {
	this.classSelect = "select_n";
	this.classOptions = "options_n";
	this.classContainer = "container_n";
}

/**
 * najit na formu vsechny selecty a transformovat
 * 
 * @param formID
 * @return
 */
SelectTransform.prototype.transform = function(formID) {
	var form = document.getElementById(formID);
	var elems = form.getElementsByTagName("select");
	for(i = 0; i < elems.length; i++) {
		this.transformElem(elems[i]);
	}
}

SelectTransform.prototype.transformById = function(elemID) {
	this.transformElem(document.getElementById(elemID));
}

SelectTransform2.prototype.transform2 = function(formID) {
	var form = document.getElementById(formID);
	var elems = form.getElementsByTagName("select");
	for(i = 0; i < elems.length; i++) {
		this.transformElem(elems[i]);
	}
}

SelectTransform2.prototype.transformById = function(elemID) {
	this.transformElem(document.getElementById(elemID));
}

/**
 * nahradit prvek select pomoci policka s aktualni vybranou polozkou
 * a div s vyberem polozek
 * 
 * @param input
 */
SelectTransform.prototype.transformElem = function(input) {
	var par = input.parentNode;
	var si = input.selectedIndex;
	var i, opt, cnt;
	
	var node = document.createElement("div");
	node.className = this.classSelect + " " + input.className;
	node.id = input.id;
	var span = document.createElement("span");
	span.innerHTML = input.options[si].text;
	node.appendChild(span);
	
	var cont = document.createElement("div");
	cont.className = this.classContainer;
	var opts = document.createElement("div");
	opts.className = this.classOptions;
	for(i = 0; i < input.options.length; i++) {
		cnt = document.createElement("div");
		opt = document.createElement("span");
		opt.innerHTML = input.options[i].text;
		cnt.appendChild(opt);
		opts.appendChild(cnt);
		this.setOptionClick(opt, input, span, input.options[i].text, input.options[i].value);
	}
	
	this.setSelectClick(node, opts);
	
	cont.appendChild(opts);
	node.appendChild(cont);
	par.insertBefore(node, input);
	input.style.display = "none";
	opts.style.display = "none";
}

SelectTransform2.prototype.transformElem = function(input) {
	var par = input.parentNode;
	var si = input.selectedIndex;
	var i, opt, cnt;
	
	var node = document.createElement("div");
	node.className = this.classSelect + " " + input.className;
	node.id = input.id;
	var span = document.createElement("span");
	span.innerHTML = input.options[si].text;
	node.appendChild(span);
	
	var cont = document.createElement("div");
	cont.className = this.classContainer;
	var opts = document.createElement("div");
	opts.className = this.classOptions;
	for(i = 0; i < input.options.length; i++) {
		cnt = document.createElement("div");
		opt = document.createElement("span");
		opt.innerHTML = input.options[i].text;
		cnt.appendChild(opt);
		opts.appendChild(cnt);
		this.setOptionClick(opt, input, span, input.options[i].text, input.options[i].value);
	}
	
	this.setSelectClick(node, opts);
	
	cont.appendChild(opts);
	node.appendChild(cont);
	par.insertBefore(node, input);
	input.style.display = "none";
	opts.style.display = "none";
}

/**
 * closure pro klik na cely select
 * 
 * @param node
 * @param options
 */
SelectTransform.prototype.setSelectClick = function(node, options) {
	var fHide = function() {
		options.style.display = "none";
		removeEvent("click", fHide, document);
	};
	node.onclick = function() {
		if(options.style.display == "none") {
			options.style.display = "block";
			setTimeout(function() {
				addEvent("click", fHide, document);
			}, 10);
		}
	}
}


SelectTransform2.prototype.setSelectClick = function(node, options) {
	var fHide = function() {
		options.style.display = "none";
		removeEvent("click", fHide, document);
	};
	node.onclick = function() {
		if(options.style.display == "none") {
			options.style.display = "block";
			setTimeout(function() {
				addEvent("click", fHide, document);
			}, 10);
		}
	}
}
/**
 * closure pro klik na polozku
 * 
 * @param node
 * @param input
 * @param span
 * @param text
 * @param value
 */
SelectTransform.prototype.setOptionClick = function(node, input, span, text, value) {
	node.onclick = function() {
		span.innerHTML = text;
		input.value = value;
		if(input.onchange) {
			input.onchange();
		}
	}
}

var selectTrans = new SelectTransform();

SelectTransform2.prototype.setOptionClick = function(node, input, span, text, value) {
	node.onclick = function() {
		span.innerHTML = text;
		input.value = value;
		if(input.onchange) {
			input.onchange();
		}
	}
}

var selectTrans2 = new SelectTransform2();

//------------------------------- pomocne --------------------------------------

function addEvent(eventName, handler, object) {
	if(object.addEventListener) {
		object.addEventListener(eventName, handler, false);
	} else {
		object.attachEvent("on" + eventName, handler);
	}
}

function removeEvent(eventName, handler, object) {
	if(object.removeEventListener) {
		object.removeEventListener(eventName, handler, false);
	} else {
		object.detachEvent("on" + eventName, handler);
	}
}

function getEventTarget(e) {
	if(!e)
		var e = window.event;

	if(e.target) {
		return e.target;
	} else if(e.srcElement) {
		return e.srcElement;
	}
}
/*
  moje funkce
*/
/*
			function fixedEl(id){
				if(document.all){
					document.all['id'].style.pixelTop = document.body.scrollTop + 195;
							// pixelTop je něco jako top v CSS
							// document.body.scrollTop říká, jak moc je to odrolované dolů
							// ta devadesátka je ta samá devadesátka jako ve stylu
					}
			}
     */
