/* Keyboard event handler */
function kd(e) {
	if (typeof(Event)=='function') {	// NN
		var kod		= e.which;
		var shift	= e.modifiers & Event.SHIFT_MASK;
		var alt		= e.modifiers & Event.ALT_MASK;
		var ctrl	= e.modifiers & Event.CONTROL_MASK;
	} else {							// IE
		var kod		= event.keyCode;
		var shift	= event.shiftKey;
		var alt		= event.altKey;
		var ctrl	= event.ctrlKey;
	}

	if (ctrl==true && alt==false && kod==83) {
		if (document.forms && document.forms.dataForm) {
			document.forms.dataForm.submit();
			return false;
		}
	}

	if (isset('disableTab') && (event.srcElement.name=='MSVARS[funkcjaTresc]' || event.srcElement.name=='MSVARS[uslugaFunkcja]') && kod==9) {
		return false;
	}

	if (ctrl==true && alt==false && kod==81) {
		if (document.forms && document.forms.dataForm && document.forms.dataForm.elements['MSVARS[frmPublish]']) {
			document.forms.dataForm.elements['MSVARS[frmPublish]'].value = 1;
			document.forms.dataForm.submit();
			return false;
		}
	}

	return true;
}

if (document.attachEvent) {
	document.onkeydown = kd;
}


/* Main functions */
function isset(varName)  {
	return (typeof(window[varName])!=='undefined');
}


function evalJS(responseText)  {
	var scriptFragment = '(?:<script.*?>)((\n|.)*?)(?:<\/script>)';
	var match    = new RegExp(scriptFragment, 'img');
	var response = responseText.replace(match, '');
	var scripts  = responseText.match(match);

	match = new RegExp(scriptFragment, 'im');
	if (scripts!=null) {
		for (var i=0; i<scripts.length; i++) {
			eval(scripts[i].match(match)[1]);
		}
	}
}


function closeWindow() {
	self.close();
}


/* Mouse events' functions */
function clearOnMouseOut(elementID) {
	document.getElementById(elementID).onmouseout = null;
}


function addOnMouseOutClass(elementID, className) {
	if (!className) className = 'brdrTrBg';
	document.getElementById(elementID).onmouseout = function () {this.className = className};
}


function clearOnMouseOver(elementID) {
	document.getElementById(elementID).onmouseover = null;
}


function addOnMouseOverClass(elementID, className) {
	if (!className) className = 'brdrTrBg';
	document.getElementById(elementID).onmouseover = function () {this.className = className};
}


/* Tabs' functions */
function showTab(tabID, tabCnt) {
	for (i=1; i<tabCnt+1; i++) {
		tab = document.getElementById('tab'+i);
		btn = document.getElementById('tab'+i+'Btn');

		tab.style.display	= i==tabID ? 'block' : 'none';
		btn.className		= i==tabID ? 'tabActive' : 'tabInactive';
	}
}


/* Layers' functions */
function shLayer(layerID) {
   var obj				= document.getElementById(layerID);
   obj.style.display	= obj.style.display=='block' ? 'none' : 'block';
}


/* DataTree functions */
function shNode(nodeID) {
   obj = document.getElementById(nodeID);
   obj.style.display = obj.style.display=='block' ? 'none' : 'block';
   document.images[nodeID + '_img'].src = obj.style.display=='none' ? '/s/themes/1/dataTree/dtExpand.png': '/s/themes/1/dataTree/dtCollapse.png';
   document.images[nodeID + '_img'].title = obj.style.display=='none' ? '+': '-';
}


/* Clipboard functions */
function pasteFromClipboard(text) {
	if (isset('SpawEngine')) {
		var editor		= SpawEngine.getActiveEditor();
		if (editor) {
			var pageName	= editor.getActivePage().name;
			var pageMode	= editor.getActivePage().editing_mode;

			if (pageMode=='design')	{
				try	{
					document.getElementById(pageName + '_rEdit').focus();
					document.frames(pageName + '_rEdit').focus();  	
					editor.insertHtmlAtSelection(text);
				} catch (e)	{
					try	{
						document.getElementById(pageName + '_rEdit').focus();
						editor.insertHtmlAtSelection(text);
					} catch (e)	{}
				}
			} else if(pageMode=='html') {
				try	{
					document.getElementById(pageName).focus();
					var ed = editor.getPageInput(pageName);
					if (ed.createTextRange) {
						ed.focus(ed.caretPos);
						ed.caretPos = document.selection.createRange().duplicate();
						ed.caretPos.text = text;
					} else {
						ed.value += text;
					}
				} catch(e) {}
			} 
		}
	}
}


/* Form functions */
function getFormElement(formID,elementID) {
	if (!formID) formID = 'dataForm';

	frm	= document.getElementById(formID);
	if (frm!==null) {
		obj = frm.elements['MSVARS['+elementID+']'];
		if (!obj) obj = frm.elements[elementID];
	} else {
		obj = document.getElementById('MSVARS['+elementID+']');
		if (!obj) obj = document.getElementById(elementID);
	}
	return obj;
}


function shSet(formID, setID) {
   var obj											= document.getElementById(setID);
   obj.style.display								= obj.style.display=='block' ? 'none' : 'block';
   document.forms[formID].elements[setID].value		= obj.style.display=='none' ? '0' : '1';
   document.images[setID+'_img'].src				= obj.style.display=='none' ? '/s/themes/1/panel/setExpand.png': '/s/themes/1/panel/setCollapse.png';
   document.images[setID+'_img'].title				= obj.style.display=='none' ? 'Pokaż': 'Ukryj';
}


function showCond(conditionalID) {
   var obj				= document.getElementById(conditionalID);
   obj.style.display	= 'block';
}


function hideCond(conditionalID) {
   var obj				= document.getElementById(conditionalID);
   obj.style.display	= 'none';
}


function disableElement(formID, elementID, resetValue) {
	obj	= getFormElement(formID,elementID);
	if (obj) {
		obj.disabled				= true;
		obj.style.borderColor		= '#dddddd';
		obj.style.backgroundColor	= '#f0f0f0';
		if (resetValue==true) {
			if (obj.type=='text' || obj.type=='textarea') {
				obj.value = '';
			}
			if (obj.type=='checkbox' || obj.type=='radio') {
				obj.checked = false;
			}
			if (obj.type=='select-one') {
				obj.selectedIndex = 0;
			}
			if (obj.type=='select-multiple') {
				for (i=0; i<obj.options.length; i++) {
					obj.options[i].selected = false;
				}
			}
		}
	}
	lbl	= getFormElement(formID,elementID+'Lbl');
	if (lbl) {
		obj.style.color				= '#dddddd';
	}
}


function enableElement(formID, elementID) {
	obj	= getFormElement(formID,elementID);
	if (obj) {
		obj.disabled				= false;
		obj.style.borderColor		= '#aaaaaa';
		obj.style.backgroundColor	= '#ffffff';
	}
	lbl	= getFormElement(formID,elementID+'Lbl');
	if (lbl) {
		obj.style.color				= '#666666';
	}
}


function regenerateOptions(formID, elementID, responseText, optSelected) {
	if (!optSelected) optSelected = 0;
	obj	= getFormElement(formID,elementID);
	if (obj) {
		while (obj.firstChild) {
			obj.removeChild(obj.firstChild);
		} 

		optG = null; 
		oArr = eval(responseText); 

		for (i=0; i<oArr.length; i++) {
			if (oArr[i][0]=='OPTGROUP') {
				optG		= document.createElement('optgroup'); 
				optG.label	= oArr[i][1]; 
				obj.appendChild(optG);
			} else if (oArr[i][0]=='OPTGROUPC') {
				optG		= null;
			} else {
				var opt		= new Option(); 
				opt.value	= oArr[i][0]; 
				opt.selected= oArr[i][0]==optSelected ? true : false; 
				opt.appendChild(document.createTextNode(oArr[i][1])); 
				if (optG!=null) {
					optG.appendChild(opt);
				} else {
					obj.appendChild(opt);
				}
			}
		} 
		obj.style.width = '100%';
		obj.style.width = '95%';
		if (formID.indexOf('filterForm')>-1) {
			obj.style.width = '100%';
		}
	}
}


function setInputValue(formID, elementID, elementValue) {
	obj = getFormElement(formID,elementID);
	if (obj) {
		obj.value = elementValue;
	}
}


function codeField(formID, elementID) {
	var kod		= window.event.keyCode;
	var shift	= window.event.shiftKey;

	if (kod==9)	{
		try	{
			ed = getFormElement(formID, elementID);
			ed.focus();
			ed.caretPos = document.selection.createRange().duplicate();
			tmp = ed.caretPos.text.split("\n");
			ed.caretPos.text = '';
			for (i=0; i<tmp.length; i++) {
				if (shift) {
					ed.caretPos.text += tmp[i].substring(0,1)=="\t" ? tmp[i].substring(1,tmp[i].length) : tmp[i];
				} else {
					ed.caretPos.text += "\t" + tmp[i];
				}
			}
			if (tmp.length>1) {
				ed.caretPos.text += "\n";
			}
		} catch(e) {}
		return false;
	}
}