// zaskrtnutie vsetkych checkboxov v rade
function checkAll(state, field) {
	if (field) {
		if (field.length > 0) {
			for (var i = 0; i < field.length; i++) {
				field[i].checked = state;
			}
		} else {
			field.checked = state;
		}
		return true;
	}
	return false;
}

// nastavenie akcie formulara
function setAction(form, action, field) {
	if (field) {
		var fieldChecked = false;
		if (field.length > 0) {
			for (var i = 0; i < field.length; i++) {
				fieldChecked = (fieldChecked || (field[i].checked));
			}
		} else {
			fieldChecked = field.checked;
		}
		
		if (!fieldChecked) {
			alert("K vykonání požadované akce je nutné zaškrtnout alespoň jeden asset ze seznamu.");
		}
	}
	for (var i = 0; i < form.length; i++) {
		if (form[i].name == "button") {
			form[i].value = action;
			form.submit();
			return true;
		}
	}
	return false;
}

// nastavenie contentu (kvoli scrolovaniu)
// toto je brutalny HACK, ale bohuzial ma nenapada ziadny lepsi sposob ako to obist
content = {
	init : function () {
		if (document.getElementById("content")) {
			if (document.getElementById("topFrame")) {
				var t = document.getElementById("topFrame");
				var tH = t.offsetHeight;
			} else {
				// popupy nemaju topframe
				tH = 0;
			}
			var c = document.getElementById("content");
			c.firstChild.style.height = winH() - tH - 2 + "px";
			if (t) {
				t.style.height = tH + "px";
			}
		}
	}
}
// evt.add(window, "load", content.init);

// schovavanie a zobrazovanie filtra
collapse = {

	containerCollapsed : null,
	containerExpanded : null,
	containerPath : null,
	
	init : function() {
		var c = document.getElementById("content");
		if (c && !cls.has(c, "dontReorganize")) {

			var obj = c.firstChild;
			while (obj && !cls.has(obj, "layoutHolder")) {
				obj = obj.nextSibling;
			}
			
			collapse.containerCollapsed = document.createElement("div");
			collapse.containerCollapsed.id = "containerCollapsed";
			obj.appendChild(collapse.containerCollapsed);

			collapse.containerPath = document.createElement("div");
			collapse.containerPath.id = "containerPath";
			obj.appendChild(collapse.containerPath);

			collapse.containerExpanded = document.createElement("div");
			collapse.containerExpanded.id = "containerExpanded";
			obj.appendChild(collapse.containerExpanded);
			
			var toolbar = document.createElement("div");
			toolbar.className = "tools";
			var toolbarButton = document.createElement("a");
			var toolbarIcon = document.createElement("img");
			
			var holders = c.getElementsByTagName("div");
			for (var i = holders.length-1; i >= 0; i--) {
				if (cls.has(holders[i], "holder")) {
					if (holders[i].id == "navPath") {
						collapse.containerPath.appendChild(holders[i]);
					} else {
						var h = holders[i].getElementsByTagName("h1");
						if (h.length > 0) {
							if (cls.has(h[0], "link")) {
								collapse.containerCollapsed.appendChild(h[0]);
								holders[i].parentNode.removeChild(holders[i]);
							} else {
								if (!cls.has(h[0], "dontReorganize")) {
									// toolbar
									var t = toolbar.cloneNode(true);
									h[0].parentNode.insertBefore(t, h[0]);
										
									// close
									var button = toolbarButton.cloneNode(true);
									button.href = "#";
									evt.add(button, "click", collapse.changeState);
									var icon = toolbarIcon.cloneNode(true);
									icon.src = "../images/window-close.gif";
									button.appendChild(icon);
									t.appendChild(button);
		
									var mini = h[0].cloneNode(true);
									mini.relatedHolder = holders[i];
									holders[i].relatedMini = mini;
									mini.style.display = "block";				/* IE hack */
									if (cls.has(holders[i], "closed")) {
										mini.className = "closed";
									}
									evt.add(mini, "click", collapse.changeState);
									collapse.containerCollapsed.appendChild(mini);
								}
								collapse.containerExpanded.insertBefore(holders[i], collapse.containerExpanded.firstChild);
							
							}


						}
					}
				}
			}

			return true;
		}
		return false;
	},
	
	changeState : function(e) {
		e = evt.fix(e);

		var mini;
		var holder;
		
		var found = false;
		var obj = e.target;
		while (!found) {
			if (obj.tagName.toLowerCase() == "body") {return false;}
			if (obj.relatedMini) {
				holder = obj;
				mini = obj.relatedMini;
				found = true;
			}
			if (obj.relatedHolder) {
				holder = obj.relatedHolder;
				mini = obj;
				found = true;
			}
			obj = obj.parentNode;
		}
		
		if (cls.has(holder, "closed")) {
			cls.remove(holder, "closed");
			cls.remove(mini, "closed");
		} else {
			cls.add(holder, "closed");
			cls.add(mini, "closed");
		}
		
		return true;
	}
	
}
// evt.add(window, "load", collapse.init);



// sortovanie tabuliek
sorter = {
	cells : [],
	
	init : function() {
		var cells = document.getElementsByTagName("th");
		sorter.cells = cells;
		for (var i = 0; i < cells.length; i++) {
			if (cls.has(cells[i], "sortable")) {
				evt.add(cells[i], "mouseover", sorter.action);
				evt.add(cells[i], "mouseout", sorter.action);
				evt.add(cells[i], "mousedown", sorter.action);
				evt.add(cells[i], "mouseup", sorter.action);
				evt.add(cells[i], "click", sorter.action);
			}
		}
		return true;
	},
	
	action : function(e) {
		e = evt.fix(e);

		var obj;
		if (e.currentTarget) {
			obj = e.currentTarget;
		} else {
			obj = e.target;
			while (obj.tagName != "TH") {
				obj = obj.parentNode;
			}
		}

		if (e.type == "mouseover")		{cls.add(obj, "hovered");}
		if (e.type == "mouseout")		{cls.remove(obj, "hovered");}
		if (e.type == "mousedown")		{cls.add(obj, "pressed");}
		if (e.type == "mouseup")		{cls.remove(obj, "pressed");}

		if ((e.type == "click") && (e.target.tagName.toLowerCase() != "a")) {
			var a = obj.getElementsByTagName("a");
			if (a.length > 0) {
				document.location = a[0].href;
			}
		}

	}
}

// addEvent(window, "load", sorter.init);

// reakcia na select jazyka v editoru assetov
language_select = {
	init : function () {
		var select = document.getElementById("language_select");
		if (select) 
			evt.add(select, "change", language_select.selectLanguage);
	},
	selectLanguage : function (e) {
		e = evt.fix(e);
		var select = document.getElementById("language_select");
		if (!select || select.value == "") return (false);
		var obj;
		if (e.currentTarget) 
			obj = e.currentTarget;
		else 
			obj = e.target;
		obj.form.submit();
		return(true);
	}
}
//evt.add(window, "load", language_select.init);

/* akoze modalne okno */
dialog = {
	open : function(url, w, h) {
		w = (w) ? w : 800;
		h = (h) ? h : 500;

		window.name = "dialogParent";
		
		var newWin = window.open(url, "dialog", "scrollbars=yes,dependent=yes,resizable=yes,status=yes,width=" + w + ",height=" + h);

/*
		var disabler = document.createElement("div");
		disabler.id = "disabler";
		disabler.style.width = winW() + "px";
		disabler.style.height = winH() + "px";
		document.body.appendChild(disabler);
*/

/*		
		addEvent(newWin, "blur", function() {
			newWin.focus();
		});
*/
		evt.add(newWin, "load", function() {
			newWin.focus();
		});
/*
		addEvent(newWin, "unload", function() {
			window.focus();
		});
*/
		return newWin;
	},
	
	openWithName : function(url, name, w, h) {
		w = (w) ? w : 800;
		h = (h) ? h : 500;

		window.name = "dialogParent";
		
		var newWin = window.open(url, name, "scrollbars=yes,dependent=yes,resizable=yes,status=yes,width=" + w + ",height=" + h);

/*
		var disabler = document.createElement("div");
		disabler.id = "disabler";
		disabler.style.width = winW() + "px";
		disabler.style.height = winH() + "px";
		document.body.appendChild(disabler);
*/

/*		
		addEvent(newWin, "blur", function() {
			newWin.focus();
		});
*/
		evt.add(newWin, "load", function() {
			newWin.focus();
		});
/*
		addEvent(newWin, "unload", function() {
			window.focus();
		});
*/
		return newWin;
	}
}




/* rychly vyber assetu a jeho varianty */
function quickPick(type, variant, img, name, variantName) {
	if (type) {
		if (!variant) {variant = "default";}
		var frm = document.newAsset;
		frm.asset_type.value = type;
		frm.content_variant.value = variant;
		reference.replaceDetails(
			document.getElementById("newAssetTypeDescription"),
			reference.assetType(img, name, variantName)
		);
	}
	return false;
}



/* rozbalenie/zbalenie detailov transakcie */
function transactionDetails(elm) {
	if (elm) {
		var firstTD = false;
		while (elm.tagName.toLowerCase() != "tbody") {
			if (elm.tagName.toLowerCase() == "td") {
				firstTD = elm;
			}
			if (elm.parentNode) {
				elm = elm.parentNode;
			} else {
				return false;
			}
		}
		if (cls.has(elm, "expanded")) {
			cls.remove(elm, "expanded");
		} else {
			cls.add(elm, "expanded");
		}
		
		/* hack pre Mozillu, ktora ma tendenciu nezobrazit scrollbar pre BODY pri zmene vysky obsahu */
		document.body.style.display = "none";
		document.body.style.display = "block";
		
		return true;
	}
	return false;
}



// pomocne funkcie na zistovanie rozmerov okna
function winW(){if(window.innerWidth)return window.innerWidth;else return document.body.clientWidth;}
function winH(){if(window.innerHeight)return window.innerHeight;else return document.body.clientHeight;}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}
//var isIE = true;
newMenu = {
 
 init : function() {
  var isIE = ((document.all)&&(!window.opera)) ? true : false;
  if (document.getElementById("newMenuAnchor")) {
   evt.add(document.getElementById("newMenuAnchor"), "click", newMenu.show);
   evt.add(document.getElementById("newMenuClose"), "click", newMenu.hide);
   if (isIE) {
    var menu = document.getElementById("newMenu");
    var myIframe = document.createElement("iframe");
    myIframe.src = "../js/blank.html";
    menu.iframe = document.getElementsByTagName("body")[0].appendChild(myIframe); 
    menu.iframe.style.position = "absolute";  
    menu.iframe.style.visibility = "hidden";    
   }
  }
  
 },
 
 show : function(e) {
  var isIE = ((document.all)&&(!window.opera)) ? true : false;
  var newMenu = document.getElementById("newMenu");
  var toolBarMain = document.getElementById("toolBarMain");
  e = evt.fix(e);
  var ieHack = 0;
  if (isIE) {
   ieHack = -3;
   //schovej selecty
   //cls.add(document.getElementsByTagName("body")[0], "no-select");
  } 
  newMenu.style.top     = toolBarMain.offsetHeight + findPosY(toolBarMain) + ieHack;
  newMenu.style.display = "block";
  newMenu.style.left    = findPosX(e.target)-newMenu.offsetWidth+e.target.offsetWidth;
  newMenu.style.zIndex = 1000;  
  if (isIE) {
   newMenu.iframe.style.left        = newMenu.style.left;
   newMenu.iframe.style.top         = parseInt(newMenu.style.top) +5;
   newMenu.iframe.style.width       = newMenu.offsetWidth;
   newMenu.iframe.style.height      = newMenu.offsetHeight;
   newMenu.iframe.style.visibility  = 'visible';
   newMenu.iframe.style.zIndex      = 999;
  }
  
  //cls.remove(e.target, "closed");
 },

 hide : function(e) {
  var isIE = ((document.all)&&(!window.opera)) ? true : false;
  var newMenuAnchor = document.getElementById("newMenuAnchor");
  var newMenu = document.getElementById("newMenu");
  //cls.remove(document.getElementsByTagName("body")[0], "no-select");
  newMenu.style.display = "none";
  if (isIE) {newMenu.iframe.style.visibility = "hidden";}
  //cls.add(newMenuAnchor, "closed");
 }
}

evt.add(window, "load", newMenu.init);

/* emCalendar */
var dateCz = [
	['pattern', 'j.n.Y'],
	['showDate', true],
	['showTime', false],
	['closeOnClick', true]
];

var fullDateEn = [
	['pattern', 'Y-m-d H:i:s'],
	['showDate', true],
	['showTime', true],
	['minuteStep', 5],
	['closeOnClick', true]
];

function initCalendars() {
	if (document.createElement) {
		var inputs = document.getElementsByTagName("INPUT");
		for (var i = 0; i < inputs.length; i++) {
			if (cls.has(inputs[i], 'emCalendarInput')) {
				var calInput      = inputs[i];
				configArrayName   = calInput.className.match(/emCalendarConfig\-([a-zA-z0-9]+)/);
				if (configArrayName) {
					try {
						var configArray   = eval(configArrayName[1]);
						calInput.calendar = new emCalendar(calInput, configArray);
					}
					catch (e) {
						calInput.calendar = new emCalendar(calInput);
						alert('Config array "' + configArrayName[1] + '" for emCalendar script is not defined or is corrupted!');
					} 
				}
				evt.add(calInput, 'focus', function(e) {e = evt.fix(e); e.target.calendar.show();});
			}
		}
	}
}

evt.add(window, 'load', initCalendars);


