// Laenderdropdown ein- und ausblenden
var countrylayerwidth=0;
function countryselect(mode)
 {   
   var layer=get('countryselect');
   if (mode)
    {
      var x=get('countrydisplay').getX()-3;
      var maxwidth=Acolyte.getVisibleWidth();
      if (!countrylayerwidth) countrylayerwidth=layer.getWidth(); // Breite nur einmal messen da Wert spaeter nicht mehr stimmt
      if (x+countrylayerwidth>maxwidth) x+=maxwidth-countrylayerwidth-x; // Layer weiter nach links wenn Aufloesung zu niedrig
      layer.setX(x);
      layer.show();
    }
   if (!mode) layer.hide();
 }
// caching fuer ajax anfragen
aAjaxDocCache = new Array();
var activelayer=false;

var jump=0; var opened=0;
function closejump () {
  if (opened==0 && document.getElementById('jumpoptions')) {
    document.getElementById('jumpoptions').style.display='none';
    jump=0;
  }
  else opened=0;
}

function closejump () {
  if (document.getElementById('jumpoptions')) {
    if (opened==0) {
      document.getElementById('jumpoptions').style.display='none';
      jump=0;
    }
    else opened=0;
  }
}
function linklayer (el) {
  var text=el.parentNode.lastChild;  
  if (text.style.display=='block')
  {
      text.style.display='none';
      el.style.backgroundImage = 'url(/gfx/layer_plus.gif)';
  }
  else
  {
      text.style.display='block';
      el.style.backgroundImage = 'url(/gfx/layer_minus.gif)';
  }
}
function clayer (el, doc, channel, focuscontent, right) {
  var request;
  if (aAjaxDocCache[doc]) {
    if (right) document.getElementById('flayercontent').innerHTML=aAjaxDocCache[doc];
    else document.getElementById('clayercontent').innerHTML=aAjaxDocCache[doc];
    openclayer(el, focuscontent, right);
  }
  else if (aAjaxDocCache[doc]!==false) {
    // ?nderungen um asynchron den server abzufragen
    var xmlhttp = false;
    // consultant-abfrage
    if (!focuscontent) request = '/ajax/consultant.php?consultant='+doc+'&channel='+channel;
    // focus-doc-abfrage
    else request = '/ajax/focuslayer.php?doc='+doc;
    if (typeof(XMLHttpRequest)!='undefined') xmlhttp=new XMLHttpRequest();
    // Internet Explorer 6 und aelter
    if (!xmlhttp) try { xmlhttp=new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) { try { xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) { xmlhttp=false; } }
    // Anfrage abschicken    
    if (xmlhttp){    	
      xmlhttp.open('GET',request,true);
      xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
          // caching
          if (xmlhttp.responseText) {
            aAjaxDocCache[doc] = xmlhttp.responseText;
            if (right) document.getElementById('flayercontent').innerHTML=aAjaxDocCache[doc];
            else document.getElementById('clayercontent').innerHTML=aAjaxDocCache[doc];
            openclayer(el, focuscontent, right);
          }
          else aAjaxDocCache[doc]=false;
        }
      }
      xmlhttp.send(null);
    }
  }
}


function openclayer (el, focuscontent, right) {
  if (right) {
    var layer=document.getElementById('flayer');
    var pointerOffset=130;
  }
  else {
    var layer=document.getElementById('clayer');
    var pointerOffset=120;
  }
  var scroll,height,relposition,newtop,newleft,diff;
  if (window.pageYOffset) scroll=window.pageYOffset;
  else if (document.body.scrollTop) scroll=document.body.scrollTop;
  else if (document.documentElement.scrollTop) scroll=document.documentElement.scrollTop;
  else scroll=0;
  if (document.body && self.innerHeight) height=Math.min(document.body.clientHeight,self.innerHeight);
  else if (document.documentElement && document.documentElement.clientHeight) { height=document.documentElement.clientHeight; extra=1; }
  else if (document.body) height=document.body.clientHeight;
  
  var parent=el;
  var cposition=0;
  var lposition=0;
  while (parent) {
    cposition+=parent.offsetTop;
    lposition+=parent.offsetLeft;
    parent=parent.offsetParent;
  }
  cposition+=9;
  if (focuscontent=='topics') cposition+=6;
  else if (focuscontent=='archive') cposition+=el.offsetHeight-20;
  if (focuscontent=='topics' && !right) {
    if (el.offsetHeight>20) lposition=586;
    else lposition+=el.offsetWidth+48;
  }
  else if (focuscontent=='topics') {
    if (el.offsetHeight>20) { lposition=116; cposition+=15; }
    else lposition-=434;
  }
  if (focuscontent=='topics') layer.style.left=lposition+'px';
  if (focuscontent=='archive') layer.style.left='30px';

  var lheight=layer.firstChild.offsetHeight;
  if (cposition-scroll > height-lheight && focuscontent!='archive') {
    newtop=height+scroll-lheight;
    newleft=cposition-newtop;
    if (newleft+pointerOffset > lheight) {
      diff=lheight-pointerOffset-newleft;
      newleft=newleft+diff;
      newtop=newtop-diff;
    }
  }
  else {
    newtop=cposition;
    newleft=-1;
  }
  layer.style.top=newtop+'px';
  if (right) document.getElementById('flayerright').style.top=newleft+'px';
  else document.getElementById('clayerleft').style.top=newleft+'px';
  
  if (focuscontent=='topics' && right) activelayer=window.setTimeout('keepflayer()',500);
  else if (focuscontent=='topics') activelayer=window.setTimeout('keepclayer()',500);
  else layer.style.visibility="visible";
}

function closeclayer () {
  if(document.getElementById('flayer'))
   {
       document.getElementById('flayer').style.visibility="hidden";
   }
  
  if(document.getElementById('clayer'))
   {
       document.getElementById('clayer').style.visibility="hidden";
   }
  
  if (activelayer) { window.clearTimeout(activelayer); activelayer=false; }
}

function keepclayer () {
  document.getElementById('clayer').style.visibility="visible";
}

function keepflayer () {
  document.getElementById('flayer').style.visibility="visible";
}



function getConsultantData(consultant, channel)
{
    var content;

    if(aAjaxConsultantCache[consultant]){
        return aAjaxConsultantCache[consultant];
    }else{
        // änderungen um asynchron den server abzufragen
        var xmlhttp = false;
        var request = '/ajax/consultant.php?consultant='+consultant+'&channel='+channel;
        if (typeof(XMLHttpRequest)!='undefined') xmlhttp=new XMLHttpRequest();
        // Internet Explorer 6 und aelter
           if (!xmlhttp) try { xmlhttp=new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) { try { xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) { xmlhttp=false; } }
        // Anfrage abschicken
           if (xmlhttp){
              xmlhttp.open('GET',request,true);
              xmlhttp.onreadystatechange=function() {
              if (xmlhttp.readyState==4 && xmlhttp.status == 200) {
                  var content = xmlhttp.responseText;
                  // caching
                 aAjaxConsultantCache[consultant] = content;
                 return content;
              }
          }
              xmlhttp.send(null);
        }
    }
}

function navclasses (id,cl) {
  document.getElementById('navtop'+id).className=cl;
  document.getElementById('nav'+id).className=cl;
  document.getElementById('navbottom'+id).className=cl;
}
function navswitch (on,off) {
  var lefton=on-1;
  var leftoff=off-1;
  navclasses(on,'active');
  navclasses(off,'');
  if (lefton>0) navclasses(lefton,'leftofactive');
  if (off-on!=1 && leftoff>0) navclasses(leftoff,'');
}

function SetAllCheckBoxes(FormName, FieldName, CheckValue)
{
    if(!document.forms[FormName])
        return;
    var objCheckBoxes = document.forms[FormName].elements[FieldName];
    if(!objCheckBoxes)
        return;
    var countCheckBoxes = objCheckBoxes.length;
    if(!countCheckBoxes)
        objCheckBoxes.checked = CheckValue;
    else
        // set the check value for all check boxes
        for(var i = 0; i < countCheckBoxes; i++)
            objCheckBoxes[i].checked = CheckValue;
}

function serialize( mixed_value ) {
     var _getType = function( inp ) {
        var type = typeof inp, match;
        if (type == 'object' && !inp) {
            return 'null';
        }
        if (type == "object") {
            if (!inp.constructor) {
                return 'object';
            }
            var cons = inp.constructor.toString();
            if (match = cons.match(/(\w+)\(/)) {
                cons = match[1].toLowerCase();
            }
            var types = ["boolean", "number", "string", "array"];
            for (key in types) {
                if (cons == types[key]) {
                    type = types[key];
                    break;
                }
            }
        }
        return type;
    };
    var type = _getType(mixed_value);
    var val, ktype = '';
    
    switch (type) {
        case "function": 
            val = ""; 
            break;
        case "undefined":
            val = "N";
            break;
        case "boolean":
            val = "b:" + (mixed_value ? "1" : "0");
            break;
        case "number":
            val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value;
            break;
        case "string":
            val = "s:" + mixed_value.length + ":\"" + mixed_value + "\"";
            break;
        case "array":
        case "object":
            val = "a";
            /*
            if (type == "object") {
                var objname = mixed_value.constructor.toString().match(/(\w+)\(\)/);
                if (objname == undefined) {
                    return;
                }
                objname[1] = serialize(objname[1]);
                val = "O" + objname[1].substring(1, objname[1].length - 1);
            }
            */
            var count = 0;
            var vals = "";
            var okey;
            for (key in mixed_value) {
                ktype = _getType(mixed_value[key]);
                if (ktype == "function" && ktype == "object") { 
                    continue; 
                }
                
                okey = (key.match(/^[0-9]+$/) ? parseInt(key) : key);
                vals += serialize(okey) +
                        serialize(mixed_value[key]);
                count++;
            }
            val += ":" + count + ":{" + vals + "}";
            break;
    }
    if (type != "object" && type != "array") val += ";";
    return val;
}

function urlencode(str) {
return escape(str).replace('+', '%2B').replace('%20', '+').replace('*', '%2A').replace('/', '%2F').replace('@', '%40');
}

function urldecode(str) {
return unescape(str.replace('+', ' '));
}
