// window information (add some prototypes to the window standart object)

var vdwwindow = new mywindow();
function SetWindowSize()
{
   var argc = SetWindowSize.arguments.length
   var args = SetWindowSize.arguments;
   var max_x = screen.availWidth;
   var max_y = screen.availHeight;
   var x=0;
   var y=0;
   
   if(argc == 0)//nothing to do
      return;
   
   if(args[0]=="in")
   {
      if(argc>1)
      {
         var element = document.getElementById(args[1]);
      }
      else
         var element = (document.getElementsByTagName("TABLE").length>0)?document.getElementsByTagName("TABLE")[0]:document.body;
      
      x = parseInt(element.offsetWidth)+50;
      y = parseInt(element.offsetHeight)+150;
   }
   else
      if(args[0]=="max")
      {
         x = max_x;
         y = max_y;         
      }
      else
         {
            x = parseInt(args[0]);
            y = parseInt(args[1]);
         }
   
   if(x>max_x) x = max_x;
   if(y>max_y) y = max_y;
   if(x<=0) x = 100;
   if(y<=0) y = 100;   
   
   window.resizeTo(x,y);
   
}
function mywindow()
{
   this.popups = new Array;
   this.browser = new browser();
   this.window = window;

   this._typeName = "mywindow";
   
}

mywindow.prototype.PreparePopup = function (mypage,myname){
   var args=this.PreparePopup.arguments;
   var argc=this.PreparePopup.arguments.length;   
   var ic = 0;
   var width,height,pos,left,top,channelmode,directories,fullscreen,location,menubar,resizable,scrollbars,status,titlebar,toolbar;
   var fl_found = false,value="",res=-1,pos=-1,newargs;
   var reg = new Array;
   var tab = new Array;
   reg[0] = new RegExp("w=", "g");
   reg[1] = new RegExp("h=", "g");
   reg[2] = new RegExp("p=|pos=", "g");
   reg[3] = new RegExp("l=", "g");
   reg[4] = new RegExp("t=", "g");
   reg[5] = new RegExp("c=", "g");
   reg[6] = new RegExp("d=", "g");
   reg[7] = new RegExp("full=", "g");
   reg[8] = new RegExp("loc=", "g");
   reg[9] = new RegExp("menubar=", "g");
   reg[10] = new RegExp("resizable=", "g");
   reg[11] = new RegExp("scrollbars=", "g");
   reg[12] = new RegExp("status=", "g");
   reg[13] = new RegExp("titlebar=", "g");
   reg[14] = new RegExp("toolbar=", "g");   
   
   if(argc<2)
   {
      alert("error: PreparePopup must have at least two param.");
      return false;
   }
   
   for(i=2;i<argc;i++)
   {
      fl_found = false;
      for(j=0;j<reg.length;j++)
      {
         if((res = args[i].search(reg[j])) == 0)
         {
            switch(j)
            {
               case 0:
                  value = args[i].substring((args[i].lastIndexOf("=")+1));
                  width = value;
                  break;
               case 1:
                  value = args[i].substring((args[i].lastIndexOf("=")+1));
                  height = value;
                  break;
               case 2:
                  value = args[i].substring((args[i].lastIndexOf("=")+1));
                  pos = value;
                  break;
               case 3:
                  value = args[i].substring((args[i].lastIndexOf("=")+1));
                  left = value;
                  break;
               case 4:
                  value = args[i].substring((args[i].lastIndexOf("=")+1));
                  top = value;
                  break;
               case 5:
                  value = args[i].substring((args[i].lastIndexOf("=")+1));
                  channelmode = value;
                  break;
               case 6:
                  value = args[i].substring((args[i].lastIndexOf("=")+1));
                  directories = value;
                  break;
               case 7:
                  value = args[i].substring((args[i].lastIndexOf("=")+1));
                  fullscreen = value;
                  break;
               case 8:
                  value = args[i].substring((args[i].lastIndexOf("=")+1));
                  location = value;
                  break;
               case 9:
                  value = args[i].substring((args[i].lastIndexOf("=")+1));
                  menubar = value;
                  break;
               case 10:
                  value = args[i].substring((args[i].lastIndexOf("=")+1));
                  resizable = value;
                  break;
               case 11:
                  value = args[i].substring((args[i].lastIndexOf("=")+1));
                  scrollbars = value;
                  break;
               case 12:
                  value = args[i].substring((args[i].lastIndexOf("=")+1));
                  status = value;
                  break;
               case 13:
                  value = args[i].substring((args[i].lastIndexOf("=")+1));
                  titlebar = value;
                  break;
               case 14:
                  value = args[i].substring((args[i].lastIndexOf("=")+1));
                  toolbar = value;
                  break;
               default : 
                  break;
            }
            fl_found = true;
            break;
         }
      }
      if(!fl_found)
      {
         alert("Unknow param : "+args[i]);
      }
   }
   
   ic = this.popups.length;
   this.popups[ic] = new Popup(ic,mypage,myname);
   this.popups[ic].MakeFeatures(width,height,pos,left,top,channelmode,directories,fullscreen,location,menubar,resizable,scrollbars,status,titlebar,toolbar);
   return ic;
}

//backwards compatibility
function MakeWindow(mypage,myname,w,h,scroll,pos)
{
   vdwwindow.popups[vdwwindow.PreparePopup(mypage,myname,"w="+w,"h="+h,"pos="+pos,"scrollbars="+scroll,"loc=no","d=no","status=no","menubar=no","toolbar=no","resizable=no")].Open()
}

// popup information

function Popup(id,mypage,myname)
{
   this.id = id;
   this.url = mypage;
   this.name = myname;
   this.features = "";
   this.replace = false;
   this.object = null;

   this._typeName = "Popup";
   
}

Popup.prototype.MakeFeatures = function (width,height,pos,left,top,channelmode,directories,fullscreen,location,menubar,resizable,scrollbars,status,titlebar,toolbar)
{
   //calcutate position
   if(pos=="random")
   {
      LeftPosition=(screen.width)?Math.floor(Math.random()*(screen.width-parseInt(width))):100;
      TopPosition=(screen.height)?Math.floor(Math.random()*((screen.height-parseInt(height))-75)):100;
   }
   if(pos=="center")
   {
      LeftPosition=(screen.width)?(screen.width-parseInt(width))/2:100;TopPosition=(screen.height)?(screen.height-parseInt(height))/2:100;
   }
   else
   {
      if((pos!="center" && pos!="random") || pos==null)
      {
         if(left == null)
            LeftPosition=0;
         else
            LeftPosition=parseInt(left);
         if(top == null)
            TopPosition=20;
         else
            TopPosition=parseInt(top);
      }
   }

   //write settings
   var settings='width='+width+',height='+height+',top='+TopPosition+',left='+LeftPosition;
   
   if(channelmode == 'yes' || channelmode == '1' ||  channelmode == 1)
   {
      settings+=',channelmode=yes';
   }
   else
      settings+=',channelmode=no'; 
   if(directories == 'no' || directories == '0' ||  directories == 0)
   {
      settings+=',directories=no';
   }
   else
      settings+=',directories=yes';
   
   if(fullscreen == 'yes' || fullscreen == '1' ||  fullscreen == 1)
   {
      settings+=',fullscreen=yes';
   }
   else
      settings+=',fullscreen=no';
   
   if(location == 'no' || location == '0' ||  location == 0)
   {
      settings+=',location=no';
   }
   else
     settings+=',location=yes';
   
   if(resizable == 'no' || resizable == '0' ||  resizable == 0)
   {
      settings+=',resizable=no';
   }
   else
     settings+=',resizable=yes';
   
   if(scrollbars == 'no' || scrollbars == '0' ||  scrollbars == 0)
   {
      settings+=',scrollbars=no';
   }
   else
     settings+=',scrollbars=yes';
   
   if(status == 'no' || status == '0' ||  status == 0)
   {
      settings+=',status=no';
   }
   else
      settings+=',status=yes';
   
   if(titlebar == 'no' || titlebar == '0' ||  titlebar == 0)
   {
      settings+=',titlebar=no';
   }
   else
      settings+=',titlebar=yes';
   
   if(toolbar == 'no' || toolbar == '0' ||  toolbar == 0)
   {
      settings+=',toolbar=no';
   }
   else
      settings+=',toolbar=yes';
   
   this.features = settings;
}

Popup.prototype.Open = function()
{
   this.object = new mywindow();
//   this.object.window = vdwwindow.window.open( this.url , this.name , this.features , this.replace);
   this.object.window = vdwwindow.window.open( this.url , this.name , this.features);
   this.object.window.focus();
   return this.object.window;
}

Popup.prototype.Close = function()
{
   this.object.window.close();
   this.object.window = null;
   return this.object.window;   
}

// browser information

function browser()
{
   this.ua = navigator.userAgent;
   this._typeName = "browser";   
}

browser.prototype.isOpera = function()
{
   return /Opera/.test(this.ua);
}


browser.prototype.isGecko = function()
{
   return navigator.product == "Gecko" && ! ( this.isOpera());
}

browser.prototype.isIEWin = function()
{
   return vdwwindow.window.external && /Win/.test(this.ua);
}

browser.prototype.isIEMac = function()
{
   return vdwwindow.window.external && /Mac/.test(this.ua);
}

browser.prototype.getVersion = function()
{
   if( this.isIEWin() || this.isIEMac() )
   {
      return Number(this.ua.match(/MSIE ([0-9.]+)/)[1]);
   }
   else 
   if( this.isGecko() )
   {
      var n = this.ua.match(/rv:([0-9.]+)/)[1];

      var ar = n.split(".");

      var s = ar[0] + ".";

      for(var i = 1; i < ar.length; ++i)
      {
         s += ("0" + ar[i]).match(/.{2}$/)[0];
      }

      return Number(s);
   }
   else if( this.isOpera() )
   {
      return Number(this.ua.match(/Opera ([0-9.]+)/)[1]);
   }
   else
   {
      return null;
   }
}

function ShowWindow(xml,width,height)
{
   vdwwindow.popups[vdwwindow.PreparePopup('content.php?xml_param='+xml+'&pageWidth='+(width-40)+'&pageHeight='+(height-30)+'&isPopup=1','dialog','w='+width,'h='+height,'p=center','c=no','d=no','full=no','menubar=no','status=no','titlebar=no','toolbar=no','loc=no')].Open()
}
