var topMenuSelected=null, topSubMenuSelected=null, leftMenuSelected=null, leftSubMenuSelected=null;
var visible_left_menu_id=null;

function topMenuSelect(oItem) {
	
	if (oItem==topMenuSelected) return;
	oItem.className="tmisel";
	if (topMenuSelected!=undefined && topMenuSelected!=null) {
		topMenuSelected.className="tmi";
		HideMenu('tsm'+get_menu_id(topMenuSelected.id,2))
	}
	ShowMenu('tsm'+get_menu_id(oItem.id,2))
	topMenuSelected=oItem;
}

function get_menu_id(id,at) {
	if (id.length>at)
		return id.substr(at);
	else
		return "";
}

function topSubMenuSelect(oItem) {

	if (oItem==topSubMenuSelected) return;
	
	if (topMenuSelected!=undefined && topMenuSelected!=null)
		HideMenu('lm'+get_menu_id(topMenuSelected.id,2));
	if (topSubMenuSelected!=undefined && topSubMenuSelected!=null) {
		topSubMenuSelected.className="tsmi";
		HideMenu('lm'+get_menu_id(topSubMenuSelected.id,3));
	}
	if (oItem!=null)
		oItem.className="tsmisel";
	ShowLeftMenu('lm'+get_menu_id(oItem.id,3));
	topSubMenuSelected=oItem;
}

function leftMenuSelect(oItem) {

	if (oItem==leftMenuSelected) return;
	oItem.className="lmisel";
	if (leftMenuSelected!=undefined && leftMenuSelected!=null) {
		HideMenu('lsm'+get_menu_id(leftMenuSelected.id,2));
		leftMenuSelected.className="lmi";
	}
	ShowMenu('lsm'+get_menu_id(oItem.id,2));
	leftMenuSelected=oItem;
}

function leftSubMenuSelect(oItem) {

	if (oItem==leftSubMenuSelected) return;
	oItem.className="lsmisel";
	if (leftSubMenuSelected!=undefined && leftSubMenuSelected!=null)
		leftSubMenuSelected.className="lsmi";
	leftSubMenuSelected=oItem;
}

function ShowLeftMenu(id) {
	
	if (visible_left_menu_id!=id) {
		HideMenu(visible_left_menu_id);
		visible_left_menu_id=id;
	}
	if (id==null || id=='' || id==undefined) return;
	var oItem=document.getElementById(id);
	if (oItem==undefined || oItem==null) {
		return;
	}
	oItem.style.display='';
}

function ShowMenu(id) {
	var oItem=document.getElementById(id);
	if (oItem!=undefined || oItem!=null) {
		oItem.style.display='';
	}
}

function HideMenu(id) {
	var oItem=document.getElementById(id);
	if (oItem!=undefined || oItem!=null) {
		oItem.style.display='none';
	}
}

function show_hide(id) {
	var oItem=document.getElementById(id);
	if (oItem==undefined || oItem==null) return;
	if (oItem.style.display=='none')
		oItem.style.display='';
	else
		oItem.style.display='none';
}

function OpenWin(url, name, parm) {
	var hWin=window.open(url,name,parm);
  	hWin.focus();
}


function addEvent(oElem, eventName, eventHandler) {
	if (oElem==undefined || oElem==null) return;
	if (window.attachEvent)
		oElem.attachEvent(eventName,eventHandler);
	else
		oElem.addEventListener(eventName, eventHandler, false)
}

function att_hover_event(tags) {
	var inputs=document.getElementsByTagName(tags);
	
	if (inputs==null) {
		//alert("no inputs");
		return;
	}
	var is_enabled;
	for (var i=0; i<inputs.length; i++) {
		is_enabled=0;
		switch (inputs[i].tagName) {
			case "INPUT":
				if ((inputs[i].type=="text" || inputs[i].type=="password") && inputs[i].className=="text")
					is_enabled=1;
				break;
			case "SELECT","TEXTAREA":
				if (inputs[i].className=="text")
					is_enabled=1;
				break;
		}
		if (is_enabled) {
			addEvent(inputs[i], is_ie?"onmouseover":"mouseover", ElementAct);
			addEvent(inputs[i], is_ie?"onmouseout":"mouseout", ElementDeAct);
			addEvent(inputs[i], is_ie?"onfocus":"focus", ElementAct);
		}
	}
}

/*************************************
**functions menu higlight
*************************************/
function isSubMenu(oItem) {
   if (oItem==undefined || !oItem) return 0;
   if (oItem.className.substr(0,3)=='sub')
      return 1;
   else
      return 0;
}

function MenuHL(oItem,sClass) {
   var expr=/sel/;
   
   if (oItem.className.search(expr)!=-1) return;
   oItem.className=(isSubMenu(oItem)?'sub':'')+sClass;
}

/**********************************
* function used in input elements *
* when mouse cursor moves in/or   *
* and on focuse in/out            *
**********************************/
var focus_Elem=null;
function ElementAct(e) {
	var evt=e?e:window.event;
	var oItem=is_ie?evt.srcElement:evt.target;
	if (oItem==null || oItem==undefined) {
		//window.status="obj is empty";
		return;
	}
	
	if (evt.type=="focus") {
	   	if (focus_Elem!=null && focus_Elem!=oItem) {
	   		focus_Elem.className="focusout_element";
	   	}
	   	oItem.className="focusin_element";
	   	if (focus_Elem!=oItem)
	   		focus_Elem=oItem;
	   	//window.status=oItem.tagName+" - activated by "+evt.type;
	} else {
	   	if (focus_Elem!=oItem)
	   		oItem.className="act_element";
   	}
}

function ElementDeAct(e) {

	var evt=e?e:window.event;
	var oItem=is_ie?evt.srcElement:evt.target;
	if (oItem==null || oItem==undefined) {
		//window.status="obj is empty";
		return;
	}	

	if (evt.type=="focus") {
	   	oItem.className="focusout_element";
	   	//window.status=oItem.tagName+" - DeActivated by "+evt.type;
	} else {
	   	if (focus_Elem!=oItem)
	   		oItem.className="inact_element";
   	}
}

function SubmitDynamicForm(oForm, sScript, sParams) {
   var iPos, iEnd, i;

   oForm.action=sScript;
   iPos=sParams.indexOf("=");
   while (iPos>0)
   {
      var oInput = document.createElement("INPUT");
      oInput.type="hidden";
      oInput.name=sParams.substr(0,iPos);
      iEnd=sParams.indexOf(",");
      if (iEnd<0)
         iEnd=sParams.length;
      oInput.value=sParams.substr(iPos+1,iEnd-iPos-1);
      oForm.appendChild(oInput);
      sParams=sParams.substr(iEnd+1,sParams.length-iEnd);
      iPos=sParams.indexOf("=");
   }
   oForm.submit();
   var iLen=oForm.children.length;
   if (iLen==0) return;
   for (i=iLen-1;i>=0;i--)
   {
      oForm.removeChild(oForm.children.item(i));
   }
}

function table_rows_hover() {
	if (!is_ie) return;
	var tables=document.getElementsByTagName('table');
	if (tables==null) return;
	for ( var i = 0; i < tables.length; i++ ) {
		if (tables[i].className!='tbl') continue;
		var tbodies=tables[i].getElementsByTagName('tbody');
		if (tbodies==null) continue;
		for ( var j = 0; j < tbodies.length; j++ ) {
			var rows=tbodies[j].getElementsByTagName('tr');
			for ( var k = 0; k < rows.length; k++ ) {
				rows[k].onmouseover = function() {
	                this.className += ' hover';
	            }
	            rows[k].onmouseout = function() {
	                this.className = this.className.replace(' hover', '');
	            }
            }
		}
	}
}

function edit(inEvent,sFormId) {
	var hEvent=window.event?window.event:inEvent;
	if (is_ie)
		var oElem=hEvent.srcElement;
	else
		var oElem=hEvent.target;

   if (oElem.tagName=='TD') {
	   var oRow=oElem.parentNode;
	   oRow.getElementsByTagName('input')[0].checked=true;
   }
   var oForm=document.getElementById(sFormId);
   oForm.act.value=2;
   oForm.submit();
}

function ins(sFormId) {
   var oForm=document.getElementById(sFormId);
   oForm.act.value=1;
   oForm.submit();
}

function save_form(sFormId) {
   var oForm=document.getElementById(sFormId);
   if (oForm==null) return;
   oForm.save.value=1;
   oForm.submit();
}

function cancel(sFormId) {
   var oForm=document.getElementById(sFormId);
   if (oForm==null) return;
   oForm.act.value=0;
   oForm.submit();
}

/*
function upd(sFormId) {
   var oID=document.getElementById('id');
   oID.value=id;
   document.frCont.act.value=20;
   document.frCont.submit();
}
*/
function checkbox_change(inEvent,sObj) {
	var hEvent=window.event?window.event:inEvent;
	if (is_ie)
		var oCheck=hEvent.srcElement;
	else
		var oCheck=hEvent.target;

   var oObj=document.getElementsByName(sObj);
   if (oCheck.checked)
      oObj[0].value=1;
   else
      oObj[0].value=0;
}

function change_menu(pid, mid) {
	var oForm=document.getElementById("frMenus");
	if (oForm==null) return;
	oForm.act.value=2;
	oForm.perms.value=pid;
	oForm.id.value=mid;
	oForm.submit();
}

function show_cont_menu(obj) {
	var oMenu=document.getElementById("contMenu");
	oMenu.innerHTML=obj.tagName;
	oMenu.style.display="";
	
}

function close_cont_menu() {
	var oMenu=document.getElementById("contMenu");
	oMenu.style.display="none";
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function ins_menu(permid, lid, pid) {
	var oForm=document.getElementById("frMenus");
	if (oForm==null) return;
	oForm.act.value=1;
	oForm.perms.value=permid;
	oForm.layout.value=lid;
	oForm.parent.value=pid;
	oForm.submit();
}

function save_menu(mid) {
	var oForm=document.getElementById("frMenus");
	if (oForm==null) return;
	oForm.act.value=(mid==0)?1:2;
	oForm.id.value=mid;
	oForm.save.value=1;
	oForm.submit();
}

function save_perm() {
	var oForm=document.getElementById("frMenus");
	if (oForm==null) return;
	oForm.act.value=2;
	oForm.save.value=1;
	oForm.submit();
}

function del_menu(mid, force) {
	var oForm=document.getElementById("frMenus");
	if (oForm==null) return;
	oForm.act.value=3;
	oForm.id.value=mid;
	if (oForm.force) oForm.force.value=force;
	oForm.submit();
}

function doBrowse(field_name, url, type, win) {
	alert("Field_Name: " + field_name + "\nURL: " + url + "\nType: " + type + "\nWin: " + win);
}

function set_form_value(sFormId, sItemName, sVal, fSubmit) {
	var oForm=document.getElementById(sFormId);
	if (oForm==null) return;
	var oItem=document.getElementsByName(sItemName);
	if (oItem==null) return;
	oItem[0].value=sVal;
	if (fSubmit) oForm.submit();
	
}

resizeEditorBox = function (editor) {
    // Have this function executed via TinyMCE's init_instance_callback option!
    // requires TinyMCE3.x
    var container = editor.contentAreaContainer, /* new in TinyMCE3.x -
        for TinyMCE2.x you need to retrieve the element differently! */
        formObj = document.forms[0], // this might need some adaptation to your site
        dimensions = {
            x: 0,
            y: 0,
            maxX: 0,
            maxY: 0
        }, doc, docFrame;

    dimensions.x = formObj.offsetLeft; // get left space in front of editor
    dimensions.y = formObj.offsetTop; // get top space in front of editor

    dimensions.x += formObj.offsetWidth; // add horizontal space used by editor
    dimensions.y += formObj.offsetHeight; // add vertical space used by editor

    // get available width and height
    if (window.innerHeight) {
        dimensions.maxX = window.innerWidth;
        dimensions.maxY = window.innerHeight;
    } else {
		// check if IE for CSS1 compatible mode
        doc = (document.compatMode && document.compatMode == "CSS1Compat")
            ? document.documentElement
            : document.body || null;
        dimensions.maxX = doc.offsetWidth - 4;
        dimensions.maxY = doc.offsetHeight - 4;
    }

    // extend container by the difference between available width/height and used width/height
    docFrame = container.children [0] // doesn't seem right : was .style.height;
    docFrame.style.width = container.style.width = (container.offsetWidth + dimensions.maxX - dimensions.x - 2) + "px";
    docFrame.style.height = container.style.height = (container.offsetHeight + dimensions.maxY - dimensions.y - 2) + "px";
}
