/* Script: eibox.js 
   Für das Drag&Droppen der Eiboxen habe ich Struppis
   (http://javascript.jstruebig.de/skripte/57/)
   "Einfaches Drag&Drop-Beispiel" verwendet. Struppis
   Originalfunktionen sind am "st_" zu erkennen.
   Vielen Dank an Detlef G. vom SELFHTML Forum
   für die Unterstützung und Hilfe bei allerlei
   Fragen und Problemen! */

/*********************** VARIABLEN DEKLARIEREN **********************/
var dc = document;			// Kurzschreib-
var dcde= dc.documentElement;		// formen
var ie8up;
var xpos;
var ypos = 0;
var eiboxposx;
var eiboxposy;
var pic_w;
var pic_h;
var hasZindex = 1;
var obs;				// Kurzform für _O_pened _B_ox _S_tyle (getElementById('boxname').style)
var body = (window.dc.compatMode && window.dc.compatMode == "CSS1Compat") ? window.dcde : window.dc.body || null;
var eiboxpics_name = new Array("eibox.gif", "eiboxminbut.gif", "eiboxminhover.gif", "eiboxminclick.gif", "eiboxmaxbut.gif", "eiboxmaxhover.gif", "eiboxmaxclick.gif", "eiboxclosbut.gif", "eiboxclhover.gif", "eiboxclclick.gif", "eiboxl.gif", "eiboxr.gif", "eiboxr_txt.gif", "eiboxlu.gif", "eiboxru.gif");
var eibox_pics = new Array(eiboxpics_name.length);
var eiboxpics_src = "/pics/";
/******************* ENDE VARIABLEN DEKLARIEREN *********************/

/************************* IE ab 8 ermitteln ************************/
if(dc.all) {
  if(window.postMessage) {
    ie8up = true;
  }
}
/********************* ENDE IE ab 8 ermitteln ***********************/

/********************* EIBOX-BILDER VORLADEN ************************/
function load_eiboxpics() {
  for(i=0; i<eiboxpics_name.length; ++i) {
    eibox_pics[i] = new Image();
    eibox_pics[i].src = eiboxpics_src+eiboxpics_name[i];
  }
}
/******************* ENDE EIBOX-BILDER VORLADEN *********************/

/***************** MAUSKOORDINATEN / DRAGBEWEGUNG *******************/
dc.onmousemove = setOpeningPos;				// Position der Eibox beim Öffnen festlegen (top: 300px
function setOpeningPos(e) {				// oberhalb der Mausposition, left: 10px vom Fensterrand)
  if(!e) e = window.event;
  ypos = e.pageY ? e.pageY : e.clientY + body.scrollTop;
  eiboxposx = 10+"px";
  eiboxposy = (ypos - 300) < body.scrollTop ? body.scrollTop+"px" : ypos - 300+"px";
}

function st_getEvtPos(we) {
    if(!we) we = window.event; 
    var t = we.pageY ? we.pageY : we.clientY + body.scrollTop;
    var l = we.pageX ? we.pageX : we.clientX + body.scrollLeft;
    return [t, l];
}

function st_getPos(o) {
    var t = l = 0;
    if(o && o.offsetParent) {
        while(o) {
            t += o.offsetTop;
            l += o.offsetLeft;
            o = o.offsetParent;
        }
    }
    return [t, l];
}
/******************* ENDE KOORDINATEN ERMITTELN *********************/

/************************* EIBOX AUFRUFEN ***************************/
function open_eibox(name,picname) {
  obs = dc.getElementById(name).style;
  if (picname != 0) {
    pic_w = dc.getElementById(picname).width; 
    pic_h = dc.getElementById(picname).height;
    obs.width = pic_w+30+"px";
    if(pic_h > 445) {
      dc.getElementById(name+'_li').style.height = pic_h+"px";
    }
    dc.getElementById(name+'_re').style.width = pic_w+"px";
    dc.getElementById(name+'_ru').style.width = pic_w+24+"px";
    dc.getElementById(name+'_head').style.width = pic_w-32+"px";
  } else { obs.width = 360+"px";}
  dc.getElementById(name+'_minb').style.visibility = 'visible';
  dc.getElementById(name+'_maxb').style.visibility = 'hidden';
  obs.position = "absolute";
  obs.top = eiboxposy;
  obs.left = eiboxposx;
  obs.visibility = 'visible';
  obs.overflow = 'visible';
  obs.zIndex = hasZindex++;
}
/************************ ENDE EIBOX AUFRUFEN ***********************/

/*** EIBOX MINIMIEREN, WIEDERHERSTELLEN, DRAG&DROPPEN, SCHLIESSEN ***/
function pos_clip_eibox () {
  var boxen = dc.getElementsByTagName('div');
  for (var i=0;i<boxen.length;i++) {
    if ((boxen[i].className == 'eibox') && (boxen[i].style.overflow == "hidden")) {
     boxen[i].style.top= window.opera ? dcde.scrollTop+self.innerHeight-29+"px" : dcde.scrollTop+dcde.clientHeight-29+"px";
    }
  }
}

function clip_eibox(name) {
  obs = dc.getElementById(name).style;
  obs.overflow='hidden';
  dc.getElementById(name+'_minb').style.visibility = 'hidden';
  dc.getElementById(name+'_maxb').style.visibility = 'visible';
  if (dc.all && !is_opera9up && !ie8up) {
    obs.top= window.opera ? dcde.scrollTop+self.innerHeight-29+"px" : dcde.scrollTop+dcde.clientHeight-29+"px";
    dcde.onscroll = pos_clip_eibox;
    window.onresize = window.opera ? pos_clip_eibox : function () {window.setTimeout("pos_clip_eibox()", 100);};
  }
  else {
    obs.position = "fixed";
    obs.top = "";
    obs.bottom = "0px";
  }
  obs.left = "0px";
}

function restore_eibox(name) {
  obs = dc.getElementById(name).style;
  dc.getElementById(name+'_minb').style.visibility = 'visible';
  dc.getElementById(name+'_maxb').style.visibility = 'hidden';
  cth = dc.getElementById(name+'_ct') ? dc.getElementById(name+'_ct').offsetHeight : 0;
  reh = dc.getElementById(name+'_re') ? dc.getElementById(name+'_re').offsetHeight : 0;
  if (obs.left == "0px") {
    obs.overflow='visible';
    if (dc.all && !is_opera9up) {
      if(ie8up) {
        obs.position = "absolute";
      }
      if (cth != 0) {
        obs.top = (dcde.scrollTop+dcde.clientHeight-cth-30) < body.scrollTop ? body.scrollTop+"px" : dcde.scrollTop+dcde.clientHeight-cth-30+"px";
      }
      else if (reh != 0) {
        obs.top = (dcde.scrollTop+dcde.clientHeight-reh-30) < body.scrollTop ? body.scrollTop+"px" : dcde.scrollTop+dcde.clientHeight-reh-30+"px";
      }
    }
    else {
    obs.position = "absolute";
    obs.bottom = "";
      if (cth != 0) {
        obs.top = (dcde.scrollTop+self.innerHeight-cth-30) < body.scrollTop ? body.scrollTop+"px" : dcde.scrollTop+self.innerHeight-cth-30+"px";
      }
      else if (reh != 0) {
        obs.top = (dcde.scrollTop+self.innerHeight-reh-30) < body.scrollTop ? body.scrollTop+"px" : dcde.scrollTop+self.innerHeight-reh-30+"px";
      }
    }
    obs.left = eiboxposx;
    obs.zIndex = hasZindex++;
  }
  else { obs.overflow='visible'; obs.zIndex = hasZindex++; }
}

function st_drag_start(we) {
  var pos; 
  pos = st_getPos(this);	    // Position des Elements
  this.start_top = pos[0];
  this.start_left = pos[1];
  pos = st_getEvtPos(we);	    // Position des Ereignisses
  this.evt_top = pos[0];
  this.evt_left = pos[1];
  dc.dragObject = this;
  dc.onmouseup = st_end_drag;
  dc.onmousemove = st_do_drag;
  return false;
}

function st_do_drag(we) {
  var o = this.dragObject;
  if(!o) return;
  var minLeft = 90 - o.offsetWidth;
  var pos = st_getEvtPos(we);     // Position des Ereignisses
  var dTop = o.start_top - o.evt_top + pos[0];
  var dLeft = o.start_left - o.evt_left + pos[1];
  o.style.top = (dTop > 0 ? dTop : 0 ) + 'px';
  o.style.left = (dLeft > minLeft ? dLeft : minLeft) + 'px';
  return false;
}

function st_end_drag() {
  var o = this.dragObject;
  this.onmouseup = setOpeningPos;	// PA-Änderung: Falls Eibox nach dem Drag&Drop geschlossen wird, geht sie bei einem erneuten Öffnen wieder left: 10px und top: 300px oberhalb Mausposition auf
  this.onmousemove = null;
  return false;
}

function drag_me(name) {
  if(name) {
    obs = dc.getElementById(name).style;
    if (obs.overflow != 'hidden') {
      dc.getElementById(name).onmousedown = st_drag_start;
      dc.getElementById(name).onmouseout = st_end_drag;
      dc.getElementById(name).onmouseup = st_end_drag;
      dc.getElementById(name).style.zIndex = hasZindex++;
    }
  }
}

function close_eibox(name) {
  obs = dc.getElementById(name).style;
  dc.getElementById(name+'_minb').style.visibility = 'hidden';
  dc.getElementById(name+'_maxb').style.visibility = 'hidden';
  obs.overflow='visible';
  obs.visibility = 'hidden';
  obs.zIndex = 1;
  obs.top=0;
}
/**************** ENDE EIBOX MANIPULIEREN *****************/

/********************* HILFSFUNKTION **********************/
function edAndZi(name) {
  dc.getElementById(name).onmousedown = null;		        // kein Drag&Drop, wenn im Fensterinhalt geklickt wird
  dc.getElementById(name).style.zIndex = hasZindex++;   	// dafür den simulierten "Focus"
}
/****************** ENDE HILFSFUNKTION ********************/ 

/*********************** BEIM LADEN AUFRUFEN ************************/
function load() {
  load_eiboxpics();
}
/**************** ENDE AUFRUF - - - - ENDE SCRIPT  ******************/
