CATPREFIX="x";
CATOBJIDSEP=":";
XMSROOT="x000";

function xms_removefirstxmltag(xmlstring){
newxml=xmlstring.replace(/^(<\?xml[^\?]*\?>(\\n)*)*/g,"");
return newxml;
}

function xms_tagxmsroot(xmlstring){
	return "<"+XMSROOT+">"+xmlstring+"</"+XMSROOT+">";
}

function xms_undotagxmsroot(xmlstring){
	reg=new RegExp("<[/]?"+XMSROOT+">(\\n)*","g");
	newxml=xmlstring.replace(reg,"");
return newxml;
}


function xms_tagencode(xmlstring){
	newxml=xmlstring;
	var reg=/</g;
	newxml=newxml.replace(reg,"!lt;");
	var reg=/>/g;
	newxml=newxml.replace(reg,"!gt;");
	return newxml;
}

function xms_undotagencode(xmlstring){
	newxml=xmlstring;
	var reg=/!lt;/g;
	newxml=newxml.replace(reg,"<");
	var reg=/!gt;/g;
	newxml=newxml.replace(reg,">");
	return newxml;
}

function xms_undoxmstagsonly(xmlstring){
	newxml=xms_undotagencode(xmlstring);
	return newxml;
}

function xms_xmstagsonly(xmlstring){
	xmlstring=xms_tagencode(xmlstring);
	reg=new RegExp("!lt;(/?"+CATPREFIX+"[0-9]+[A-Za-z][0-9A-Za-z]+.*?)!gt;","g");
	newxml=xmlstring.replace(reg,"<$1>");
	return newxml;
}

function xms_catid(catobjid){
	var tab=catobjid.split(CATOBJIDSEP);
	if(window.tab[0]){return tab[0];}
}

function xms_objid(catobjid){
	var tab=catobjid.split(CATOBJIDSEP);
	if(window.tab[1]){return tab[1];}
}

function xms_record(catobjid,xmlvalue,identificator1,identificator2){
	this.catobjid=catobjid;
	this.catid=xms_catid(catobjid);
	this.catid=xms_objid(catobjid);
	this.identificator1=identificator1;
	this.identificator2=identificator2;
	this.xmlvalue=xmlvalue;

}

function xms_addinput(prefix,xpathdatacatid,maxinput){
	var maxinput = (maxinput == null) ? 99 : parseInt(maxinput);
	var i=0;
	var found=0;
	var seli=0;
	var datacatid=xpathdatacatid.replace(/_[0-9]*$/,'');
	var reg=new RegExp("^"+datacatid+"_","");
	var seli=parseInt(xpathdatacatid.replace(reg,""));
	
	while(!found){
		i++;
		if(!window.document.getElementById(prefix+datacatid+"_"+i)){found=1;}
	}
	var maxi=i-1;
	if(maxi>=maxinput){return;}
	var regseli=new RegExp("(^|[^0-9])"+datacatid+"_"+seli+"([^0-9]|$)","g");
	for(var i=maxi;i>seli;i--){
		xms_replacexpathinput(window.document.getElementById(prefix+datacatid+"_"+i),"(^|[^0-9])"+datacatid+"_"+i+"([^0-9]|$)","$1"+datacatid+"_"+(i+1)+"$2");
	if(window.document.getElementById("num"+prefix+datacatid+"_"+(i+1))){document.getElementById("num"+prefix+datacatid+"_"+(i+1)).innerHTML=parseInt(document.getElementById("num"+prefix+datacatid+"_"+(i+1)).innerHTML)+1}
	}
	
	var elt = document.createElement(document.getElementById(prefix+datacatid+"_"+seli).tagName);
	elt.innerHTML = document.getElementById(prefix+datacatid+"_"+seli).innerHTML.toString().replace(regseli,"$1"+datacatid+"_"+(seli+1)+"$2");
	for (i=0;i<document.getElementById(prefix+datacatid+"_"+seli).attributes.length;i++){
		elt.setAttribute(document.getElementById(prefix+datacatid+"_"+seli).attributes[i].name, document.getElementById(prefix+datacatid+"_"+seli).attributes[i].value.toString().replace(regseli,"$1"+datacatid+"_"+(seli+1)+"$2"));
	}
	
	insertafter(document.getElementById(prefix+datacatid+"_"+seli),elt);
	if(window.document.getElementById("num"+prefix+datacatid+"_"+(seli+1))){document.getElementById("num"+prefix+datacatid+"_"+(seli+1)).innerHTML=parseInt(document.getElementById("num"+prefix+datacatid+"_"+(seli+1)).innerHTML)+1}
}

function xms_removeinput(prefix,xpathdatacatid){
	var i=0;
	var found=0;
	var seli=0;
	var datacatid=xpathdatacatid.replace(/_[0-9]*$/,'');
	var reg=new RegExp("^"+datacatid+"_","");
	var seli=parseInt(xpathdatacatid.replace(reg,""));
	while(!found){
		i++;
		if(!window.document.getElementById(prefix+datacatid+"_"+i)){found=1;}
	}
	var maxi=i-1;
	if(maxi==1)return;
	document.getElementById(prefix+datacatid+"_"+seli).parentNode.removeChild(document.getElementById(prefix+datacatid+"_"+seli));
	for(var i=seli+1;i<=maxi;i++){
		xms_replacexpathinput(window.document.getElementById(prefix+datacatid+"_"+i),"(^|[^0-9])"+datacatid+"_"+i+"([^0-9]|$)","$1"+datacatid+"_"+(i-1)+"$2");
	if(window.document.getElementById("num"+prefix+datacatid+"_"+(i-1))){document.getElementById("num"+prefix+datacatid+"_"+(i-1)).innerHTML=parseInt(document.getElementById("num"+prefix+datacatid+"_"+(i-1)).innerHTML)-1}
	}
}

function xms_replacexpathinput(tag,oldtext,newtext){
	var reg=new RegExp(oldtext,"g");
	for (i=0;i<tag.attributes.length;i++){
		tag.attributes[i].value=tag.attributes[i].value.toString().replace(reg,newtext);
	}
	tag.innerHTML=tag.innerHTML.toString().replace(reg,newtext);
}

function displaymoreinfo(tag,moreinfoid,catid,mousex,mousey){
	if (!window.maxzindex){maxzindex=getmaxzindex();}
	maxzindex++;
	var drag=1;
	var resize=1;
	var nofitleft=0;
	var nofittop=0;
	var width="";
	var height="";
	var classname="oms_moreinfo";
	var win=window;
	var left=mousex+10;
	var top=mousey+5;
	var header="<img src='"+tag.src.toString()+"' class='"+tag.className+"' title='"+tag.title+"' style='float:none;' >";
	var divhtml=document.getElementById(moreinfoid).innerHTML;
	var divid=creatediv('',divhtml,left,top,width,height,header,drag,resize,classname,win,nofitleft,nofittop)
	document.getElementById(divid).style.zIndex=maxzindex;
	//switchdisplay(divid);
}

function processform(formid,action,method,target,enctype){
	var method = (method == null || !method) ? 'POST' : method;
	var action = (action == null) ? '' : action;
	var enctype = (enctype == null) ? '' : enctype;
	if (target == null || !target){target=createiframe();}
	
	document.getElementById(formid).method=method;
	document.getElementById(formid).action=action;
	document.getElementById(formid).target=target;
	document.getElementById(formid).enctype=enctype;
	
	var tab=document.getElementById(formid).getElementsByTagName("INPUT");
	for (var i=0;i<tab.length;i++){
		if(tab[i].type.toUpperCase()=='FILE'){
			document.getElementById(formid).enctype="multipart/form-data";
			break;
		}
	}
	
	if(document.getElementById('alert'+formid)){
		document.getElementById('alert'+formid).innerHTML="<img src='"+getURL_ROOT_DIR()+"/images/oms_images/loading.gif' class='oms_imgloading'>";
		document.getElementById('alert'+formid).style.display='';
		document.getElementById('alert'+formid).style.visibility='visible';
		set_opacity('alert'+formid, 100);
		document.getElementById('alert'+formid).FadeState=2;
		}
}

function processdelete(formid){

	if(window.document.getElementById('alert'+formid)){
		document.getElementById('alert'+formid).innerHTML="<img src='"+getURL_ROOT_DIR()+"/images/oms_images/loading.gif' class='oms_imgloading'>";
		document.getElementById('alert'+formid).style.display='';
		document.getElementById('alert'+formid).style.visibility='visible';
		set_opacity('alert'+formid, 100);
		document.getElementById('alert'+formid).FadeState=2;
	}
	createiframe('',getURL_ROOT_DIR()+'/xms_admin/frame_runxmsfunction.php?functionname=xms_processdelete&par1='+document.getElementById('catobjid'+formid).value+'&par2='+formid+'&par3=alert'+formid);
}

function displayerrormessage(tagid,message,fademessage,classname,TimeToFade){ //1=fade 0=don't fade
	if(!window.document.getElementById(tagid) && !window.parent.document.getElementById(tagid))return 0;
	if(!window.document.getElementById(tagid)){win=parent;}else{win=window;}
	
	fademessage = (fademessage == null) ? 0 : fademessage;
	classname = (classname == null) ? 'omsalertform' : classname;
	TimeToFade = (TimeToFade == null) ? 5000.0 : TimeToFade;
	set_opacity(tagid, 100);
	win.document.getElementById(tagid).FadeState=2;
	win.document.getElementById(tagid).innerHTML="<table class='"+classname+"'><tr><td>"+message+"<br><img name='none' src='"+getURL_ROOT_DIR()+"/images/oms_images/spacer.gif' class='"+classname+"minwidth'/></td><td valign='top' align='right'>&nbsp;&nbsp;&nbsp;<img name='none' src='"+getURL_ROOT_DIR()+"/images/oms_images/spacer.gif' class='oms_iconclose' onclick='this.offsetParent.offsetParent.offsetParent.style.display=this.name;' /></td></tr></table>";
	win.document.getElementById(tagid).style.display='';
	win.document.getElementById(tagid).style.visibility='visible';
	if(fademessage)fade(tagid,TimeToFade);
	return 1;
}

function set_opacity(id, opacity)
{
		if(!window.document.getElementById(id) && !window.parent.document.getElementById(id))return 0;
		if(!window.document.getElementById(id)){win=parent;}else{win=window;}
        var el = win.document.getElementById(id);
        el.style["filter"] = "alpha(opacity="+opacity+")";
        el.style["-moz-opacity"] = opacity/100;
        el.style["-khtml-opacity"] = opacity/100;
        el.style["opacity"] = opacity/100;
        return true;
}


function fade(eid,TimeToFade)
{
	if(!window.document.getElementById(eid) && !window.parent.document.getElementById(eid))return 0;
	if(!window.document.getElementById(eid)){win=parent;}else{win=window;}
	TimeToFade = (TimeToFade == null) ? 5000.0 : TimeToFade;
	if(TimeToFade==0)return;
  var element = win.document.getElementById(eid);
  if(element == null)
    return;
  if(element.FadeState == null)
  {
    if(element.style.opacity == null
        || element.style.opacity == ''
        || element.style.opacity == '1')
    {
      element.FadeState = 2;
    }
    else
    {
      element.FadeState = -2;
    }
  }
   
  if(element.FadeState == 1 || element.FadeState == -1)
  {
    element.FadeState = element.FadeState == 1 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
  }
  else
  {
    element.FadeState = element.FadeState == 2 ? -1 : 1;
    element.FadeTimeLeft = TimeToFade;
    setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "',"+TimeToFade+")", 33);
  }  
}


function animateFade(lastTick, eid,TimeToFade)
{  
	if(!window.document.getElementById(eid) && !window.parent.document.getElementById(eid))return 0;
	if(!window.document.getElementById(eid)){win=parent;}else{win=window;}
  var curTick = new Date().getTime();
  var elapsedTicks = curTick - lastTick;
 
  var element = win.document.getElementById(eid);
 
  if(element.FadeTimeLeft <= elapsedTicks)
  {
    element.style.opacity = element.FadeState == 1 ? '1' : '0';
    element.style.filter = 'alpha(opacity = '
        + (element.FadeState == 1 ? '100' : '0') + ')';
    element.FadeState = element.FadeState == 1 ? 2 : -2;
    return;
  }
 
  element.FadeTimeLeft -= elapsedTicks;
  var newOpVal = element.FadeTimeLeft/TimeToFade;
  if(element.FadeState == 1)
    newOpVal = 1 - newOpVal;

  element.style.opacity = newOpVal;
  element.style.filter = 'alpha(opacity = ' + (newOpVal*100) + ')';
 
  setTimeout("animateFade(" + curTick + ",'" + eid + "',"+TimeToFade+")", 33);
}

