/* DHTML-Bibliothek */

var DHTML = false, DOM = false, MSIE4 = false, NS4 = false, OP = false;

if (document.getElementById) {
  DHTML = true;
  DOM = true;
} else {
  if (document.all) {
    DHTML = true;
    MSIE4 = true;
  } else {
    if (document.layers) {
      DHTML = true;
      NS4 = true;
    }
  }
}
if (window.opera) {
  OP = true;
}

function getElement (Mode, Identifier, ElementNumber) {
  var Element, ElementList;
  if (DOM) {
    if (Mode.toLowerCase() == "id") {
      Element = document.getElementById(Identifier);
      if (!Element) {
        Element = false;
      }
      return Element;
    }
    if (Mode.toLowerCase() == "name") {
      ElementList = document.getElementsByName(Identifier);
      Element = ElementList[ElementNumber];
      if (!Element) {
        Element = false;
      }
      return Element;
    }
    if (Mode.toLowerCase() == "tagname") {
      ElementList = document.getElementsByTagName(Identifier);
      Element = ElementList[ElementNumber];
      if (!Element) {
        Element = false;
      }
      return Element;
    }
    return false;
  }
  if (MSIE4) {
    if (Mode.toLowerCase() == "id" || Mode.toLowerCase() == "name") {
      Element = document.all(Identifier);
      if (!Element) {
        Element = false;
      }
      return Element;
    }
    if (Mode.toLowerCase() == "tagname") {
      ElementList = document.all.tags(Identifier);
      Element = ElementList[ElementNumber];
      if (!Element) {
        Element = false;
      }
      return Element;
    }
    return false;
  }
  if (NS4) {
    if (Mode.toLowerCase() == "id" || Mode.toLowerCase() == "name") {
      Element = document[Identifier];
      if (!Element) {
        Element = document.anchors[Identifier];
      }
      if (!Element) {
        Element = false;
      }
      return Element;
    }
    if (Mode.toLowerCase() == "layerindex") {
      Element = document.layers[Identifier];
      if (!Element) {
        Element = false;
      }
      return Element;
    }
    return false;
  }
  return false;
}

function getAttribute (Mode, Identifier, ElementNumber, AttributeName) {
  var Attribute;
  var Element = getElement(Mode, Identifier, ElementNumber);
  if (!Element) {
    return false;
  }
  if (DOM || MSIE4) {
    Attribute = Element.getAttribute(AttributeName);
    return Attribute;
  }
  if (NS4) {
    Attribute = Element[AttributeName]
    if (!Attribute) {
       Attribute = false;
    }
    return Attribute;
  }
  return false;
}

function getContent (Mode, Identifier, ElementNumber) {
  var Content;
  var Element = getElement(Mode, Identifier, ElementNumber);
  if (!Element) {
    return false;
  }
  if (DOM && Element.firstChild) {
    if (Element.firstChild.nodeType == 3) {
      Content = Element.firstChild.nodeValue;
    } else {
      Content = "";
    }
    return Content;
  }
  if (MSIE4) {
    Content = Element.innerText;
    return Content;
  }
  return false;
}

function setContent (Mode, Identifier, ElementNumber, Text) {
  var Element = getElement(Mode, Identifier, ElementNumber);
  if (!Element) {
    return false;
  }
  if (DOM && Element.firstChild) {
    Element.firstChild.nodeValue = Text;
    return true;
  }
  if (MSIE4) {
    Element.innerText = Text;
    return true;
  }
  if (NS4) {
    Element.document.open();
    Element.document.write(Text);
    Element.document.close();
    return true;
  }
  return false;
}

function getData(url,obj)
{
    var req = loadXMLHttpRequest();
    if(!req) return(true);

    req.onreadystatechange = function callBack()
    {
        if(req.readyState == 4)
        {
            if(req.status == 200)
            {
                var lines = Array();
                var rows = Array();

                // alte options loeschen;
                if (obj.options.length > 0) while(obj.options.length) obj.options[0] = null;

                var ret = req.responseText;

                lines = ret.split("\n");

                for(var i=0; i < lines.length; i++)
                {
                    rows = lines[i].split("\t");
                    var opt = new Option();
                    opt.value = rows[0];
                    opt.text = rows[1];
                    obj.options[obj.options.length] = opt;
                }
            }
            else
            {
                alert('An error has occurred: ' + req.statusText);
            }
        }
    }

    req.open('GET', url, true);
    req.send(null);

    return true;
}


function getData2(url,obj)
{
    var req = loadXMLHttpRequest();
    if(!req) return(true);

    req.onreadystatechange = function callBack()
    {
        if(req.readyState == 4)
        {
            if(req.status == 200)
            {
                var lines = Array();
                var rows = Array();

                return req.responseText;
            }
            else
            {
                alert('An error has occurred: ' + req.statusText);
            }
        }
    }

    req.open('GET', url, true);
    req.send(null);

    return true;
}


function urlencode (str) {

    var hexStr = function (dec) {
        return '%' + (dec < 16 ? '0' : '') + dec.toString(16).toUpperCase();
    };

    var ret = '',
            unreserved = /[\w.-]/; // A-Za-z0-9_.- // Tilde is not here for historical reasons; to preserve it, use rawurlencode instead
    str = (str+'').toString();

    for (var i = 0, dl = str.length; i < dl; i++) {
        var ch = str.charAt(i);
        if (unreserved.test(ch)) {
            ret += ch;
        }
        else {
            var code = str.charCodeAt(i);
            if (0xD800 <= code && code <= 0xDBFF) { // High surrogate (could change last hex to 0xDB7F to treat high private surrogates as single characters); https://developer.mozilla.org/index.php?title=en/Core_JavaScript_1.5_Reference/Global_Objects/String/charCodeAt
                ret += ((code - 0xD800) * 0x400) + (str.charCodeAt(i+1) - 0xDC00) + 0x10000;
                i++; // skip the next one as we just retrieved it as a low surrogate
            }
            // We never come across a low surrogate because we skip them, unless invalid
            // Reserved assumed to be in UTF-8, as in PHP
            else if (code === 32) {
                ret += '+'; // %20 in rawurlencode
            }
            else if (code < 128) { // 1 byte
                ret += hexStr(code);
            }
            else if (code >= 128 && code < 2048) { // 2 bytes
                ret += hexStr((code >> 6) | 0xC0);
                ret += hexStr((code & 0x3F) | 0x80);
            }
            else if (code >= 2048) { // 3 bytes (code < 65536)
                ret += hexStr((code >> 12) | 0xE0);
                ret += hexStr(((code >> 6) & 0x3F) | 0x80);
                ret += hexStr((code & 0x3F) | 0x80);
            }
        }
    }
    return ret;
}

function selChange(sel)
{
    var fieldname  = sel.name;
    var val   = sel.options[sel.selectedIndex].value;
    var dat = "";

    switch(fieldname)
    {
        case "mainkat":
            dat = getData('/modules/dyndropdown.php?field='+fieldname+"&mainkat="+urlencode(val)+"&target=subkat", document.getElementById('subkat'));
        break;
    }
}


function setMark(fld,key)
{
    var dat = getData2('/modules/ajax_gateway.php?act=setmark&chk=' + fld.checked + '&key='+key);
    return (dat==1);
}

function getValue(url,obj)
{
    var req = loadXMLHttpRequest();
    if(!req) return(true);

    req.onreadystatechange = function callBack()
    {
        if(req.readyState == 4)
        {
            if(req.status == 200)
            {
                var ret = req.responseText;
                obj.value = ret;
            }
            else
            {
                alert('An error has occurred: ' + req.statusText);
            }
        }
    }

    req.open('GET', url, true);
    req.send(null);

    return true;
}


function loadXMLHttpRequest() {

    var pageRequest = false;
    /*@cc_on
    @if (@_jscript_version >= 5)
        try {
            pageRequest = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e) {
            try {
                pageRequest = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) {
                pageRequest = false;
            }
        }
    @end
    @*/

    if (!pageRequest && typeof XMLHttpRequest != 'undefined') {
        pageRequest = new XMLHttpRequest()
    }
    return pageRequest;
}

function externalLinks()
{
    if (!document.getElementsByTagName) return;

    var anchors = document.getElementsByTagName("a");

    for (var i=0; i<anchors.length; i++)
    {
        var anchor = anchors[i];
        if (anchor.getAttribute("href"))
        {
            if (anchor.getAttribute("rel") == "external" || anchor.getAttribute("rel") == "nofollow")
            {
                anchor.target = "_blank";
            }
            else
            {
                anchor.href = anchor.href.replace(/{at}/g,'@');
                anchor.href = anchor.href.replace(/%7Bat%7D/g,'@');
            }
        }
    }
}

function showDiv(divID)
{
    getElement('id', divID).className='visDiv';
    return false;
}

function hideDiv(divID)
{
    getElement('id', divID).className='hidDiv';
    return false;
}

function invDiv(divID)
{
    getElement('id', divID).className='invDiv';
    return false;
}

function toggleDiv(divID)
{
    div = getElement('id', divID);

    if(div.className == 'visDiv')
    {
        div.className = 'hidDiv';
    }
    else
    {
        div.className = 'visDiv';
    }
    return false;
}

function inValidCharSet(str,charset)
{
    var result = true;
    for (var i=0;i<str.length;i++)
    if (charset.indexOf(str.substr(i,1))<0)
    {
        result = false;
        break;
    }
    return result;
}

function validateEmail(email)
{
    return (email=="" || email.indexOf('.')==-1 || email.indexOf('@') < 1 || email.indexOf('@') > email.length-5
            || email.indexOf('@') > email.lastIndexOf('.') || email.lastIndexOf('.') > email.length-3);
}

function setMainNum()
{
    with(document.forms['jobsuche'])
    {
        var bl = 0;

        if (j_CB1.checked) bl = bl + 1.0*j_CB1.value;
        if (j_CB2.checked) bl = bl + 1.0*j_CB2.value;
        if (j_CB3.checked) bl = bl + 1.0*j_CB3.value;
        if (j_CB4.checked) bl = bl + 1.0*j_CB4.value;
        if (j_CB5.checked) bl = bl + 1.0*j_CB5.value;
        if (j_CB6.checked) bl = bl + 1.0*j_CB6.value;
        if (j_CB7.checked) bl = bl + 1.0*j_CB7.value;
        if (j_CB8.checked) bl = bl + 1.0*j_CB8.value;
        if (j_CB9.checked) bl = bl + 1.0*j_CB9.value;

        var mk = mainkat.options[mainkat.selectedIndex].value;
        var sk = subkat.options[subkat.selectedIndex].value;

        var dat = getValue('/modules/ajax_gateway.php?act=numjobs&mainkat='+urlencode(mk)+"&bl="+bl, document.forms['jobsuche'].numjobs);
    }
}

function setSubNum()
{
    with(document.forms['jobsuche'])
    {
        var bl = 0;

        if (j_CB1.checked) bl = bl + 1.0*j_CB1.value;
        if (j_CB2.checked) bl = bl + 1.0*j_CB2.value;
        if (j_CB3.checked) bl = bl + 1.0*j_CB3.value;
        if (j_CB4.checked) bl = bl + 1.0*j_CB4.value;
        if (j_CB5.checked) bl = bl + 1.0*j_CB5.value;
        if (j_CB6.checked) bl = bl + 1.0*j_CB6.value;
        if (j_CB7.checked) bl = bl + 1.0*j_CB7.value;
        if (j_CB8.checked) bl = bl + 1.0*j_CB8.value;
        if (j_CB9.checked) bl = bl + 1.0*j_CB9.value;

        var mk = mainkat.options[mainkat.selectedIndex].value;
        var sk = subkat.options[subkat.selectedIndex].value;

        var dat = getValue('/modules/ajax_gateway.php?act=numjobs&mainkat='+urlencode(mk)+"&subkat="+urlencode(sk)+"&bl="+bl, document.forms['jobsuche'].numjobs);
    }
}

function setClass(elID,clN)
{
    var el = getElement('id',elID);
    if (el) el.className = clN;
}

function clCbx(ids)
{
    for(var i=0; i < ids.length; i++)
    {
        document.forms['jobsuche'].elements[ids[i]].checked = false;
        setClass(ids[i]+'L', 'nchk');
    }

    setSubNum();
}

function winHeight()
{
    var windowHeight = 0;

    if (self.innerHeight)
    {
        windowHeight = self.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientHeight)
    {
        windowHeight = document.documentElement.clientHeight;
    }
    else if (document.body)
    {
        windowHeight = document.body.clientHeight;
    }

    return windowHeight;
}


function setHeight()
{
    var winH = winHeight() - 292;

    var div = getElement("ID","hgh");

    if (div.height != winH)
    {
        div.height = winH + "px";
        saveHeight(winH);
    }
}

function createXMLHttpRequest()
{
    var xmlHttp;

    if (window.XMLHttpRequest)
    {
        xmlHttp = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    return xmlHttp;
}

function saveHeight(winH)
{
    var xmlHttp = createXMLHttpRequest();
    var url = '/modules/saveheight.php?height=' + winH;
    xmlHttp.open("GET", url, true);
    xmlHttp.onreadystatechange = function()
    {
        if (xmlHttp.readyState == 4)
        {
            if (xmlHttp.status == 200)
            {
                return false;
            }
            else if (xmlHttp.status == 204)
            {
                return false;
            }
        }

        return false;
    }

    xmlHttp.send(null);
}

var wheelto;

function JobsWheel(wid, spd) {

	this.owheel = document.getElementById(wid);
	this.owheel.Wheel = this;
	this.spd = spd;

	this.turn = function()
	{
	    var c = this.owheel.firstChild;
		var first = null;
		while (c)
		{
		    if (c.tagName == 'LI')
		    {
			    first = c;
				break;
            }

			c = c.nextSibling;
	    }

		var whlsiz = 70;	// Default
		var px = 0;

        if (first.clientHeight > 0) whlsiz = first.clientHeight;

		if (first.style.marginTop != '') { px = parseInt(first.style.marginTop); }

		first.style.marginTop = ( px - 1 ) + 'px';

		if ( parseInt(first.style.marginTop) <= -(whlsiz) )
		{
		    first.style.marginTop = '0px';
			this.owheel.removeChild(first);
			this.owheel.appendChild(first);
        }

		wheelto = setTimeout('document.getElementById(\'' + this.owheel.id + '\').Wheel.turn()', this.spd);
	}
	wheelto = setTimeout('document.getElementById(\'' + wid + '\').Wheel.turn()', this.spd);
}

function pauseWheel(wid)
{
    clearTimeout(wheelto);
}

function resumeWheel(wid, spd)
{
    JobsWheel(wid, spd);
}
