// $Rev: 40751 $ $URL: svn://subversion.gepro/kokes/_verze_branch/10.50/Kokes/web/files/define.js $ 
// ---- OBJECT bod
function cnstr_point( x, y) {
 this.X = x;
 this.Y = y;
 return;
}
// ---- OBJECT _misysURL
function _misysURL( _url ) {
	var s = new String( _url );
	var sep = '?';
	this.CallStr = s.substring( 0, s.indexOf(sep,0)+sep.length );
	s = s.substring( s.indexOf(sep,0)+sep.length,s.length+1 );
	var a = s.split(',');
	if ( a.length >= 9 ) {
		this.Center  = new cnstr_point( eval( a[0]), eval( a[1]));		
		this.Meritko = eval( a[2]);
		this.Uhel    = eval( a[3]);
		this.Size    = new cnstr_point( eval( a[4]), eval( a[5]));
		this.DPI     = eval( a[6]);
		this.View    = eval( a[7]);
		this.Vrstvy	 = a[8];
		this.Vykresy = a[9];
	}
	this.getURL = get_comm;
	a = null;s = null;
	return;
}
function _winURL( _url ) {
	var s = new String( _url );
	var sep = '&WIN=';
	if( _url.indexOf(sep)<0) sep="?";
	this.CallStr = s.substring( 0, s.indexOf(sep,0)+sep.length );
	s = s.substring( s.indexOf(sep,0)+sep.length,s.length+1 );
	var a = s.split(',');
	if ( a.length >= 9 ) {
		this.Center  = new cnstr_point( eval( a[0]), eval( a[1]));		
		this.Meritko = eval( a[2]);
		this.Uhel    = eval( a[3]);
		this.Size    = new cnstr_point( eval( a[4]), eval( a[5]));
		this.DPI     = eval( a[6]);
		this.View    = eval( a[7]);
		this.Vrstvy	 = a[8];
		this.Vykresy = a[9];
	}
	this.getURL = get_comm;
	a = null;s = null;
	return;
}
// ---- metoda get_comm : sestaveni konkretni URL podle hodnot v objektu
function get_comm() {
 return this.CallStr+Math.round(1000*this.Center.X)/1000+","+Math.round(1000*this.Center.Y)/1000+","+ this.Meritko+","+this.Uhel+","+Math.round(this.Size.X)+","+Math.round(this.Size.Y)+","+Math.round(this.DPI)+","+this.View+","+this.Vrstvy+","+this.Vykresy+",";
}
// ---- fce ShowHelp : zobrazeni okna s napovedou
function ShowHelp(par) {
 if((null!=OW.HelpWind)&&(!OW.HelpWind.closed))
  OW.HelpWind.location = "about:blank";
 var name="main.html";
 if(null!=par) name=par;
 if(SysInfo.Lng!="" && SysInfo.Lng!="cz" && name.indexOf(".",0)>0) {
  name = name.substring(0,name.indexOf(".",0))+"_"+SysInfo.Lng+"."+name.substring(name.indexOf(".",0)+1,name.length);
 }
 OW.HelpWind=window.open("/OUT/HTML/files/help/"+name,"MISYS","menubar=yes,resizable=yes,status=no,toolbar=no,location=no,directories=no,scrollbars=yes,width=750,height=400");
 return;
}
// ---- fce GetSelIdx : vrati index vybrane polozky listboxu (pro NN nahrazka za lb.selected)
function GetSelIdx( o) {
	if ( ( null!=o)&&( null!=o.options)) {
			for( var j=0; j<o.options.length; j++)
				if ( o.options[j].selected ) return j;
	}
	return -1;
}
// ---- fce GetSelIdx : vrati index vybrane polozky listboxu (pro NN nahrazka za lb.selected)
function GetSelVal( o) {
	if ( ( null!=o)&&( null!=o.options)) 
	 return o.item(o.selectedIndex).value;
	return -1;
}
// ---- fce GetRBSelIdx : vrati VALUE vybrane polozky v listboxu (pro NN nahrazka za lb.elements[lb.selected].value)
function GetRBSelIdx( o) {
	if ( null!=o) {
		for(var j=0; j < o.length; j++)
			if ( o[j].checked) return o[j].value ;
	}
	return "";
}
// ---------------------------------------------------------------------------
// Funkce pro nastaveni a zobrazeni temat a oblasti
// Typ = 1bit: 0 je pridat k soucasnemu vyberu, 1 = udelat novy vyber
//       2bit: 0 temata, oblasti, skupiny zadane aliasy, 1 = indexy
//       3bit: vyhrazeno
//       4bit: 0 temata, oblasti, skupiny zadane aliasy, 1 = jmenem (ve druhém bitu musi byt alias)
//       5bit: 0 nic, 1 = prvni bit nulovy ma vyznam ubrani ze soucasneho vyberu
// aKU je seznam nazvu oblasti oddelenych carkami nebo seznam jejich indexu
// aMAP je seznam nazvu temat nebo jejich indexu
// aGrp je seznam nazvu skupin dat nebo jejich indexu
// aLay je seznam nazvu vrstev
// aSel je již hotová selekce, která přebíjí všechno ostatní
// ---------------------------------------------------------------------------

function ShowTemataOblasti( typ, aKU, aMAP, aGrp, aLay, aSel )  
{
 if(null != aSel && aSel!="")
  App.SetTemata(aSel);
 else 
  App.SetSelect( 0, typ, aKU, aMAP);  // vytvoreni selekce
 if(null!=Mnu && ("object" == typeof(Mnu) || "function"==typeof(Mnu)) && Mnu.FLoaded()==1)
  Mnu.SetSelect(App.GetSelect()); // prekresleni vyberoveho formulare
 if( (null == aSel || aSel=="") && null != aGrp && aGrp != "") {
  if( typ&0x10 == 0x10 && typ&0x01 != 0x01)
   App.DeleteGroups(aGrp);                                 // odebrani skupin
  else 
   App.AddGroups(typ,aGrp);                                // pridani skupin
 }
 if( (null == aSel || aSel=="") && null != aLay && aLay != "")
  App.SetVrstvy(App.LayToBase64(aLay));                // nastaveni vrstev
 App.Obnovit();                                            // překresleni podle selekce
 return; 
} 
// wrapper na App.Query + katastry
function Query(TypIdentify,Macro,Style,IdeName,Hexlist,Group,refresh) {
 SetKats(Group);  
 return App.Query(TypIdentify,Macro,Style,IdeName,Hexlist,Group,refresh);
}
// nastaveni katastru
function SetKats(query)  
{
 var fas=query.split(",");
 var kus="";
 for(i=1;i<fas.length;i+=3) {
  if( i>1 && fas[i]==fas[i-3]) continue;
  if(kus!="") kus+=",";
  kus+=fas[i];
  }
 App.SetSelect( 0, 0, kus, "");  // vytvoreni selekce
 if(null!=Mnu && ("object" == typeof(Mnu) || "function"==typeof(Mnu)) && Mnu.FLoaded()==1) 
  Mnu.SetSelect(App.GetSelect()); // prekresleni treeview
 return;
}

// ---------------------------------------------------------------------------
// Funkce pro nastaveni temat a oblasti v zakodovanem tvaru (pro identifikaci)
// Parametry stejne jako u ShowTemataOblasti
// ---------------------------------------------------------------------------
function SetTemataOblasti( typ, aKU, aMAP, aGrp, aLay )  
{
 var Hexlist = ""+App.SetSelect( 1, typ, aKU, aMAP)+",";
 if( null != aGrp && aGrp != "")
  Hexlist += (App.SetGroups(typ, aGrp)+",");
 if( null != aLay && aLay != "")
  Hexlist += App.LayToBase64(aLay);
 return( Hexlist);
} /* SetTemataOblasti */

// Natazeni seznamu opsanych obdelniku
function LoadNavArea()
{
 if(App.NavArea == "#") return;
 NAVIGACE = new Array();
 var ret = App.NavArea;
 var retpol = ret.split(",");
 for( i=0,j=1; i<retpol[0]; i++,j+=5)
 {
  NAVIGACE[i] = new Array();
  NAVIGACE[i].MinXY=new cnstr_point(retpol[j],retpol[j+1]);
  NAVIGACE[i].MaxXY=new cnstr_point(retpol[j+2],retpol[j+3]);
  NAVIGACE[i].Scale=retpol[j+4];
 }
 return;
} // LoadNavArea

// Who = 0 ... do praveho panelu TREE (je-li startovni pasp. tak ten), 1 = do praveho panelu TEMA
function SwitchFrame(Who)
{
 var frameset_obj=document.getElementById("RFRAME");
 if(Who==0 && DefStart != "") {
  StartPasport( 0, DefStart);
  return;
 }
 if(Who==0) {
  if( frameset_obj.rows==rframe_rowsy || frameset_obj.rows==rframe_rowsyt) 
   frameset_obj.rows=rframe_rowsy;
  else
   frameset_obj.rows=rframe_rowsn;
/* !!! zatim zruseno
	if(null!=Mnu && ("object" == typeof(Mnu) || "function"==typeof(Mnu)) && Mnu.FLoaded()==1) {
	if( Mnu.GetNumTheme(0)==2)
     GRF.SelectKU();
  }
*/
 }
 else {
  if( Who==1) TOOL.eject_bar(); // frame TOOL musí implementovat fci eject_panel();
  if( frameset_obj.rows==rframe_rowsy || frameset_obj.rows==rframe_rowsyt) 
   frameset_obj.rows=rframe_rowsyt;
  else
   frameset_obj.rows=rframe_rowsnt;
	}
 return;
}
function SwitchToolbar()
{
 frameset_obj = document.getElementById("AROWS");
 if( frameset_obj.rows==arows_rowsnn || frameset_obj.rows==arows_rowsny || frameset_obj.rows==arows_rowsnh) {
  if( frameset_obj.rows==arows_rowsnn) 
   frameset_obj.rows=arows_rowsyn;
  else {
   if( frameset_obj.rows==arows_rowsny) 
    frameset_obj.rows=arows_rowsyy;
   else
    frameset_obj.rows=arows_rowsyh;
   }
 }
}
XHR=null;
function RunURL(src,postdata) {
 if( null==XHR) {
  if (window.XMLHttpRequest)
   XHR=new XMLHttpRequest();
  else 
   if (window.ActiveXObject) {
    try {
       XHR=new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
      try {
       XHR=new ActiveXObject("Microsoft.XMLHTTP");
       } catch (e) {return ""; /* Nelze navázat spojení se serverem */}
     }
   }
 }
 try {
  XHR.open((postdata=="")?"GET":"POST", src, /*true*/false); // Synchronní režim
  XHR.setRequestHeader('Content-type',postdata==""?'text/html; charset=utf-8':'application/x-www-form-urlencoded');
  XHR.send((postdata=="")?null:postdata);
 } catch (e) {return ""; /* Nelze odeslat data */}
 return XHR.responseText;
}
function getContentType() {
 if( null==XHR) return "";
 return XHR.getResponseHeader("Content-Type");
}
// Přepočet souřadnic kliku do skutečných souřadnic - poćítá s úhlem 0
function PrepocetBodu2( x, y, centerx, centery, pixelx, pixely, dpi, scale, angle, vlajka) {
 var vx=x-(pixelx*0.5);
 var vy=y-(pixely*0.5);
 var VX=((1*vy)/(1*dpi))*0.0254*(1*scale);
 var VY=((-1*vx)/(1*dpi))*0.0254*(1*scale);
 var s=Math.sin(angle);
 var c=Math.cos(angle);
 if((1*vlajka)==0) return((1*centerx)+((VX*c)+(VY*s)));
 return ((1*centery)+((-1*VX*s)+(VY*c)));
}

function to_clip(copytext) { 
 if (window.clipboardData) {  
  window.clipboardData.setData("Text", copytext);
  } 
 else {
  if( window.netscape && navigator.userAgent.indexOf("Mozilla",0)>=0) {
  try { 
   netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); 
  } 
  catch (e) { 
//   alert(e); 
   alert("V 'about:config' nastav 'signed.applets.codebase_principal_support' na 'true'"); 
   return false; 
  } 
 var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard); 
 if (!clip) return; 
 var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable); 
 if (!trans) return; 
 trans.addDataFlavor('text/unicode'); 
 var str = new Object(); 
 var len = new Object(); 
 var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString); 
 str.data=copytext; 
 trans.setTransferData("text/unicode",str,copytext.length*2); 
 var clipid=Components.interfaces.nsIClipboard; 
 if (!clip) return false; 
 clip.setData(trans,null,clipid.kGlobalClipboard); 
 } else { 
/* Opera, Safari
  var flashcopier = 'flashcopier';
  if(!document.getElementById(flashcopier)) {
   var divholder = document.createElement('div');
   divholder.id = flashcopier;
   document.body.appendChild(divholder);
  }
  document.getElementById(flashcopier).innerHTML = '';
  var divinfo = '<embed src="/OUT/HTML/files/_clipboard.swf" FlashVars="clipboard='+escape(copytext)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
  document.getElementById(flashcopier).innerHTML = divinfo;
*/
  }
 }
 return true;  
} 

function OOOFromScreen() {
 var url=parent.App.GetActURL(0,0,0,0);
 return OOOFromScreen_core(url);
}
function OOOFromScreen2() {
 var url=parent.App.GetActURL(0,0,0,0);
 return OOOFromScreen_core2(url,1);
}
function OOOFromScreen_core(url) {
 var query="", ur="";
 ur=new _winURL(url);
 var Xmin,Ymin,Xmax,Ymax,pomS;
 ur.Uhel=0;
 Xmin=parent.PrepocetBodu2(0,0,ur.Center.X,ur.Center.Y,ur.Size.X,ur.Size.Y,ur.DPI,ur.Meritko,ur.Uhel,0);
 Ymin=parent.PrepocetBodu2(0,0,ur.Center.X,ur.Center.Y,ur.Size.X,ur.Size.Y,ur.DPI,ur.Meritko,ur.Uhel,1);
 Xmax=parent.PrepocetBodu2(ur.Size.X,ur.Size.Y,ur.Center.X,ur.Center.Y,ur.Size.X,ur.Size.Y,ur.DPI,ur.Meritko,ur.Uhel,0);
 Ymax=parent.PrepocetBodu2(ur.Size.X,ur.Size.Y,ur.Center.X,ur.Center.Y,ur.Size.X,ur.Size.Y,ur.DPI,ur.Meritko,ur.Uhel,1);
 if((1*Xmin)>(1*Xmax)) {pomS=Xmin;Xmin=Xmax;Xmax=pomS;}
 if((1*Ymin)>(1*Ymax)) {pomS=Ymin;Ymin=Ymax;Ymax=pomS;}
 query+=""+Ymin+"|"+Ymax+"|"+Xmin+"|"+Xmax;
 return query;
}
function OOOFromScreen_core2(url,flg) {
 var query="", ur="";
 ur=new _winURL(url);
 var Xlh,Ylh,Xph,Yph,Xld,Yld,Xpd,Ypd,pomS;
 if(flg==1) ur.Uhel=0;
 Xlh=parent.PrepocetBodu2(0,0,ur.Center.X,ur.Center.Y,ur.Size.X,ur.Size.Y,ur.DPI,ur.Meritko,ur.Uhel,0);
 Ylh=parent.PrepocetBodu2(0,0,ur.Center.X,ur.Center.Y,ur.Size.X,ur.Size.Y,ur.DPI,ur.Meritko,ur.Uhel,1);
 Xld=parent.PrepocetBodu2(0,ur.Size.Y,ur.Center.X,ur.Center.Y,ur.Size.X,ur.Size.Y,ur.DPI,ur.Meritko,ur.Uhel,0);
 Yld=parent.PrepocetBodu2(0,ur.Size.Y,ur.Center.X,ur.Center.Y,ur.Size.X,ur.Size.Y,ur.DPI,ur.Meritko,ur.Uhel,1);
 Xpd=parent.PrepocetBodu2(ur.Size.X,ur.Size.Y,ur.Center.X,ur.Center.Y,ur.Size.X,ur.Size.Y,ur.DPI,ur.Meritko,ur.Uhel,0);
 Ypd=parent.PrepocetBodu2(ur.Size.X,ur.Size.Y,ur.Center.X,ur.Center.Y,ur.Size.X,ur.Size.Y,ur.DPI,ur.Meritko,ur.Uhel,1);
 Xph=parent.PrepocetBodu2(ur.Size.X,0,ur.Center.X,ur.Center.Y,ur.Size.X,ur.Size.Y,ur.DPI,ur.Meritko,ur.Uhel,0);
 Yph=parent.PrepocetBodu2(ur.Size.X,0,ur.Center.X,ur.Center.Y,ur.Size.X,ur.Size.Y,ur.DPI,ur.Meritko,ur.Uhel,1);
 query+=""+Xlh+"|"+Ylh+"|"+Xld+"|"+Yld+"|"+Xpd+"|"+Ypd+"|"+Xph+"|"+Yph;
 return query;
}

