/* WGui Main Menu */

var WGuiMainMenuTimer;

function WGuiMainMenuFormatMain(el, box) {
		box.style.top=icore.getElYPos(el)+el.offsetHeight+4+"px";
		box.style.left=icore.getElXPos(el)+"px";
}

function WGuiMainMenuFormatOther(el, box) {
		box.style.top=el.offsetTop+5+"px";
		box.style.left=(el.offsetWidth-15)+"px";
}


function WGuiMainMenuShowParents(lnkel) {
	var mnbox=lnkel;
	var boxarray=new Array('1');
	
	while(mnbox!=null) {
		if (mnbox.getAttribute('rel')=='WGuiMainMenu') break;
		if (mnbox.getAttribute('rel')=='WGuiMenuBox') {
			mnbox.style.visibility='visible';
			boxarray.push(mnbox);
		}
		mnbox=mnbox.parentNode;
	}

	//hide other menus
	var menus=document.getElementsByTagName('menu');
	for(a=0;a<menus.length;a++) {
		if (menus[a].getAttribute('rel')!='WGuiMenuBox') continue;
		var hidem=true;
		for(i in boxarray) {
			if (boxarray[i]==menus[a]) {hidem=false;break;}
		}
		if (hidem==true) menus[a].style.visibility='hidden';
	}
}

function WGuiMainMenuShowChildBox(el) {
	var div=el.nextSibling;
	
	if (div==null || div.getAttribute('rel')!='WGuiMenuBox') return;
	if (el.parentNode.parentNode.getAttribute('rel')=='WGuiMainMenu') WGuiMainMenuFormatMain(el, div); else WGuiMainMenuFormatOther(el, div);
	div.style.visibility='visible';
}

function WGuiMainMenuHide () {
	clearTimeout(WGuiMainMenuTimer);
	var divs=document.getElementsByTagName('menu');
	
	for(i=0;i<divs.length;i++) {
		if (divs[i].getAttribute('rel')!='WGuiMenuBox') continue;
		divs[i].style.visibility='hidden';
	}
}

function initWGuiMainMenu() {
	var divs=document.getElementsByTagName('menu');
	var arrindex=0;

	for (var i=0;i<divs.length;i++) {
		if (divs[i].getAttribute('rel')!='WGuiMenuBox' && divs[i].getAttribute('rel')!='WGuiMainMenu') continue;
		var link=divs[i].previousSibling;	//najdeme odkaz
		
		if (divs[i].getAttribute('rel')!='WGuiMenuBox') {
			divs[i].onmouseover = function () {
				clearTimeout(WGuiMainMenuTimer);
				this.style.visibility='visible';
			}
			
			divs[i].onmouseout = function () {
				clearTimeout(WGuiMainMenuTimer);
				WGuiMainMenuTimer=window.setTimeout('WGuiMainMenuHide();', 1000);
			}
		}
		
		var liel=divs[i].firstChild;
		while (liel!=null) {
			liel.firstChild.onmouseover = function () {
				clearTimeout(WGuiMainMenuTimer);
				WGuiMainMenuShowParents(this);
				WGuiMainMenuShowChildBox(this);
			}
			
			liel.firstChild.onmouseout = function () {
				clearTimeout(WGuiMainMenuTimer);
				WGuiMainMenuTimer=window.setTimeout('WGuiMainMenuHide();', 1000);
			}
			liel=liel.nextSibling;
		}
	}
}

/* WGui Tree */

function WGuiRepairTrees() {
	var trees = document.getElementsByTagName('ul');
	
	for(i=0;i<trees.length;i++) {
		if (trees[i].getAttribute('class')!='WGuiTree' && trees[i].getAttribute('className')!='WGuiTree') continue;
		var uls = trees[i].parentNode.getElementsByTagName('ul');
		for(var a=0;a<uls.length;a++) {
			var item=uls[a].lastChild;
			while (!item.tagName || item.tagName.toLowerCase() !='li') item=item.previousSibling;
			item.className+=' last';
		}
	}
}

/* WGui Tables */

function initWGuiDataGrids() {
	var WGtables=document.getElementsByTagName('table');
	var arrindex=0;

	for (var i=0;i<WGtables.length;i++) {		//najdeme vsetky tabulky
		if (WGtables[i].className.indexOf('WGuiDataGrid')==-1) {continue;}
		var tbody=WGtables[i].getElementsByTagName('tbody');

		for (var j=0;j<tbody.length;j++) {	//prebehneme vsetky tbody elementy
			var row=tbody[j].getElementsByTagName('tr');
			for (var k=0;k<row.length;k++) {	// nastavime vsetky riadky tabulky
				row[k].onmouseover = function () {
					if (this.className=='checked') return;
					this.oldClass=this.className;
					this.className='hover';
				}
				row[k].onmouseout = function () {
					if(this.className!='checked') this.className = this.oldClass;
				}
				row[k].onmousedown = function () {
					var input=this.getElementsByTagName('input');
					for (var i=0;i<input.length;i++) {
						if (input[i].getAttribute('id').indexOf('_wcheckbox')>-1) {
							this.onclick=function () {return false;}
							if (input[i].checked==true) {
								input[i].checked=false;
								this.className='hover';
							} else {
								input[i].checked=true;
								this.className='checked';
							}
						}
					}
				}
			}
		}
	}
}

function initWGuiWindows() {
	var WGSpan=document.getElementsByTagName('span'); //najdeme tlacitka
	var arrindex=0;
	
	for (var i=0;i<WGSpan.length;i++) {		//prebehneme vsetky DIVka
		if (WGSpan[i].getAttribute('rel')=='WGuiWindowclose') {		//nastavime zatvaraci button
			WGSpan[i].onmousedown = function () {
				var dbox=this.parentNode.parentNode;

				dbox.style.display='none';
			}
		}
		
		if (WGSpan[i].getAttribute('rel')=='WGuiWindowhide') {		//nastavime skryvaci button
			WGSpan[i].onmousedown = function () {
				var cbox=this.parentNode.nextSibling;
				
				if (cbox.style.display!='none') {
					cbox.style.display='none';
					this.innerHTML='[ zobraziť ]';
				} else {
					cbox.style.display='block';
					this.innerHTML='[ skryť ]';
				}
			}
		}
	}
}

function initWGui() {
	initWGuiMainMenu()
	initWGuiDataGrids();
	initWGuiWindows();
	WGuiRepairTrees();
}

/* Wgui pop-up windows */

function WGuiOpenDialog(params) {
	var tparams;
	
	if (!params.width) params.width=600;
	if (!params.height) params.height=500;

	if (params.modal==true) {
	} else {
		for(i in params) {
			if (i=='url' || i=='name') continue;
			tparams+=', '+i+'='+params[i];
		}
		window.open(params.url, params.name, 'status=0, scrollbars=1'+tparams);
	}
}

/* Wgui Form functions */
function WGuiObjectToJSON(obj) {
	var result='{';
	for(i in obj) result+='"'+i.replace(/(?:\w+)\[(\w+)\]/gi, '$1')+'":"'+obj[i].toString()+'",';
	return result.substr(0, result.length-1)+'}';
}

function WGuiObjectToPOST(obj) {
	var result='';
	for(i in obj) {
		result+=i+'='+encodeURIComponent(obj[i].toString())+'&';
	}
	return result.substr(0, result.length-1);
}

function WGuiFormToObject(name) {
	var frm=document.forms[name];
	var jsonobj={}
	for(i=0;i<frm.length;i++) {
		switch(frm[i].nodeName.toLowerCase()) {
			case 'textarea':
				jsonobj[frm[i].name]=frm[i].value;
			break;
			case 'select':
				jsonobj[frm[i].name]=frm[i].value;
			break;
			case 'input':
				switch(frm[i].type.toLowerCase()) {
					case 'text':
					case 'password':
					case 'hidden':
						jsonobj[frm[i].name]=frm[i].value;
					break;
					case 'radio':
						if (frm[i].checked==true) {
							jsonobj[frm[i].name]=frm[i].value;
						}
					break;
					case 'checkbox':
						if (frm[i].checked==true) {
							jsonobj[frm[i].name]=frm[i].value;
						} else {
							jsonobj[frm[i].name]='';
						}
					break;
				}
			break;
		}
	}
	return jsonobj;
}

function WGuiFormToJSON(name) {
	var jsonobj=WGuiFormToObject(name)
	return WGuiObjectToJSON(jsonobj);
}

function WGuiFormToPOST(name) {
	var jsonobj=WGuiFormToObject(name)
	return WGuiObjectToPOST(jsonobj);
}

function WGuiSetSelect(sel, value) {
	if (typeof sel=='string') sel=document.getElementById(sel);
	for(var x in sel.childNodes) {
		if (sel.childNodes[x].nodeName!=null) {
			if (sel.childNodes[x].nodeName.toLowerCase()=='option' && sel.childNodes[x].value==value) {
				sel.childNodes[x].selected=true;
				break;
			}
		}
	}
}

function WGuiJSONToForm(data, name) {
	var frm=document.forms[name];

	for(i=0;i<frm.length;i++) {
		if (frm[i].getAttribute('id')==null) continue;
		var value=data[frm[i].getAttribute('id')] ? data[frm[i].getAttribute('id')] : data[frm[i].getAttribute('id').replace(/(?:\w+)\[(\w+)\]/gi, '$1')];
		if (value=='' || value==null || value=='undefined') continue;

		switch(frm[i].nodeName.toLowerCase()) {
			case 'textarea':
				frm[i].value=value;
			break;
			case 'select':
				WGuiSetSelect(frm[i], value);
			break;
			case 'input':
				switch(frm[i].type.toLowerCase()) {
					case 'text':
					case 'password':
					case 'hidden':
						frm[i].value=value;
					break;
					case 'radio':
						if (frm[i].value==value) {
							frm[i].checked=true;
						}
					break;
					case 'checkbox':
						if (frm[i].value==value) {
							frm[i].checked=true;
						}
					break;
				}
			break;
		}
	}

}

/* Wgui AJAX get data functions */

function WGuiGetURLToObj(url, target) {
	var fakul=new ajax('GET', url);
	fakul.targetelementid=target;

	fakul.update();
}

function WGuiPostForm(frmname, target) {
	var url=document.forms[frmname].action;
	var data=WGuiFormToObject(frmname);

	$.post(url, data, function (data) {$('#'+target).html(data);});
}

function WGuiGetData(funcname, funcparams, target) {
	var fakul=new ajax('GET','/getdata.php');
	fakul.targetelementid=target;

	fakul.update(encodeURI('?func='+encodeURIComponent(funcname)+'&data='+encodeURIComponent(funcparams)));
}

function WGuiGetDataToForm(funcname, funcparams, target) {
	var fakul=new ajax('GET','/getdata.php');
	fakul.processResult=function () {
		eval('result='+this.getResponse()+';');
		WGuiJSONToForm(result, target);
	}

	fakul.update(encodeURI('?func='+encodeURIComponent(funcname)+'&data='+encodeURIComponent(funcparams)));
}

function WGuiGetDataSelect(selid, funcname, funcparam, target) {
	var fakul=new ajax('GET','/getdata.php');
	fakul.processResult=function () {
		eval('result='+this.getResponse()+';');
		icore.feedSelect(target, result);
	}
	funcparam=funcparam.replace('%result%', selid.value);
	fakul.update('?func='+encodeURIComponent(funcname)+'&data='+encodeURIComponent(funcparam));
}

/* Wgui color selector */

function WGuishowColSelector(name) {
	var SLObj=document.getElementById(name+'WGC');			//opener
	var CSObj=document.getElementById('WGuiColorSelector');		//color selector object
	
	CSObj.openername=name;
	CSObj.style.top=(icore.getElYPos(SLObj))+'px';
	CSObj.style.left=(icore.getElXPos(SLObj)+SLObj.offsetWidth)+'px';
	if (CSObj.style.visibility!='visible') CSObj.style.visibility='visible'; else CSObj.style.visibility='hidden';
}

function WGuiPreviewColor(obj) {
	var CVObj=document.getElementById('WGuiColorValue');
	var CPObj=document.getElementById('WGuiColorPreview');

	re=/rgb\((\d{1,3}),\s?(\d{1,3}),\s?(\d{1,3})\)/i;	//rozbijeme rgb od js
	args=re.exec(obj.style.backgroundColor);

	CVObj.value='#'+icore.strpad(icore.dec2hex(args[1]), 2, '0', 0)+icore.strpad(icore.dec2hex(args[2]), 2, '0', 0)+icore.strpad(icore.dec2hex(args[3]), 2, '0', 0);
	CPObj.style.backgroundColor=obj.style.backgroundColor;
}

function WGuiSetColor(obj) {
	var CSObj=document.getElementById('WGuiColorSelector');		//color selector object
	var SLObj=document.getElementById(CSObj.openername+'WGC');	//color select
	var IHObj=document.getElementById(CSObj.openername);		//input hidden

	re=/rgb\((\d{1,3}),\s?(\d{1,3}),\s?(\d{1,3})\)/i;	//rozbijeme rgb od js
	args=re.exec(obj.style.backgroundColor);

	SLObj.style.backgroundColor=obj.style.backgroundColor;
	IHObj.value='#'+icore.strpad(icore.dec2hex(args[1]), 2, '0', 0)+icore.strpad(icore.dec2hex(args[2]), 2, '0', 0)+icore.strpad(icore.dec2hex(args[3]), 2, '0', 0);
	CSObj.style.visibility='hidden';
}

/* Wgui URL link */

function WGuiOpenLinkDialog(name, form) {

	if (form!=0) {
		selname=form+'['+name+'_sel]';
		retname=form+'['+name+']';
	} else {
		selname=name+'_sel';
		retname=name;
	}
	
	var modsel=document.getElementById(selname);
	var modname=modsel[modsel.selectedIndex].value;
	window.open('/admin/dialogs/'+modname+'.php?retids[]='+retname+'&retcols[]=getLink', '_blank', 'width=700,height=500, scrollbars=yes');
}
