/*:$Modulkopf
 *GELTUNGSBEREICH:  top itservices Anzeigen
 *AUTHOR:           Hans Gollmann
 *ERSTELLT AM:      14.07.2008
 {*/

var lastKey = 0;

var annoObj = new function() {
	this.homePageID	= 1	//23
	this.td
	this.span
	this.trenn1		="¬";
	this.trenn2		="¦";
	this.trenn3		="¡";	//für mehrere Befehle hintereinander
	this.trenn4		="¥¥¥¥";	//Trenner zwischen Befehlen und Parametern
	this.liste 		=[];		//Liste mit den Anzeigen
	this.param		= []		//Übergabeparameter;
	this.init		= _init;
	this.zeige		= _zeige;
	this.nix		= _nix;
	this.nachladen	= _nachladen;
	this.suche		= _suche;
	this.headAdjust	= annoCHHeadAdjust		//Überschriften der Kopfzeile werden ausgerichtet

}

/*:
 *BESCHREIBUNG:     das keydown-event schreibt den letzten keyCode in die variable lastKey
 *ARGUMENTE:        e:	event
 *CALLER:           event.keydown
 *ERSTELLT AM:      18.04.2008
 */
function flastKey(e) {
	lastKey = e.which;
}


function annoCH(seite) {
	try {
		if (!seite) { seite = ""; }
		annoObj.seite = seite;
		annoObj.init()
		getAsync(653,[10000,annoObj.homePageID],annoCHShowAnz);
	} catch(e) {
		debugger;doError(e)
	}
}


function _init() {
	try {
		this.firstPage = false
		this.head = document.getElementById("annoHead"+annoObj.seite)
		this.span = document.getElementById("annoBlock"+annoObj.seite)
		this.span.className = "annoBlock"+annoObj.seite
		this.table = this.span.appendChild(document.createElement("table"))
		this.table.border = 0
		this.table.cellSpacing = 0
		this.table.className = "anno" + annoObj.seite
		this.table.title = "Projekt anzeigen"
		this.tbody = this.table.appendChild(document.createElement("tbody"))
		if (typeof(event)=="undefined") {
			document.captureEvents(Event.KEYDOWN);
			document.onkeydown = flastKey;
		}
		if (annoObj.seite) {
			var span = document.getElementById("annoBlock2")
			span.className = "annoBlock"+annoObj.seite
			var table = span.appendChild(document.createElement("table"))
			table.border = 0
			table.cellSpacing = 0
			table.className = "anno" + annoObj.seite
			table.title = "Projekt anzeigen"
			this.tbody2 = table.appendChild(document.createElement("tbody"))
		}
		try {
			var pageTracker = _gat._getTracker("UA-11434533-2");
			pageTracker._trackEvent('Jobs','open')
		} catch(e) {}
	} catch(e) {
		debugger;doError(e)
	}
}

function googleCount(seite) {
	try {
		if (typeof(seite)=="undefined") { seite="" }
		var pageTracker = _gat._getTracker("UA-11434533-2");
		pageTracker._trackEvent('Jobs','Quelle',seite)
	} catch(e) {}
}


function annoCHDoOpen(ID) {
	try {
		var anno = annoObj.liste[ID];
		try {
			var s = ''
			if ((anno)&&(anno.Kennziffer)) { s = anno.Kennziffer; }
			var pageTracker = _gat._getTracker("UA-11434533-2");
			pageTracker._trackEvent('Jobs','view',s)
		} catch(e) {}
		var s = "http://www.top-itservices.com/Anzeigen/Vorlage.asp?JobID="+ID+"&HomePageID="+annoObj.homePageID+"&Art=1&top=1&LogoID="+annoObj.homePageID
		open(s,"_blank");
	} catch(e) {
		debugger;doError(e)
	}
}

function _nix() {
	try {
		var i=-1;
		var tbody = annoObj.tbody
		while (tbody.firstChild) {
			tbody.removeChild(tbody.firstChild)
		}
		var tr = annoObj.tbody.appendChild(document.createElement("tr"))
		var th = tr.appendChild(document.createElement("th"))
		th.className = "nix" + annoObj.seite
		th.appendChild(document.createTextNode("Zu diesem Suchbegriff konnte leider keine Anzeige gefunden werden."))
	} catch(e) {
		debugger;doError(e)
	}
}

function _zeige(alle,welche) {
	try {
		if (annoObj.seite) {
			if (!welche) {
				welche = "fest";
				annoObj.fertig = []
			}
		} else {
			annoObj.fertig = [];
		}
		var i=-1;
		var tbody = ((welche)&&(welche=="frei"))?annoObj.tbody2:annoObj.tbody
		while (tbody.firstChild) {
			tbody.removeChild(tbody.firstChild)
		}
		for (var x in annoObj.liste) {
			if (x) {
				var anno = annoObj.liste[x]
				if ((alle)||(anno.passend)) {
					if (((!welche)||(anno[welche])) && (!annoObj.fertig[x])) {
						annoObj.fertig[x] = true;
						i++
						if ((annoObj.seite)&&(welche=="fest")&&(i>4)) break;
						if ((annoObj.seite)&&(welche=="frei")&&(i>12)) break;
						var className = "anno" + Math.round(i%2)
						var tr = tbody.appendChild(document.createElement("tr"))
						tr.className = "anno"
						tr["onclick"]		= new Function("annoCHDoOpen("+anno.ID+")");
						if (!annoObj.seite) {
							var td = tr.appendChild(document.createElement("td"))
							td.className = className + "Kz"
							td.style.whiteSpace = "noWrap"
							td.appendChild(document.createTextNode(anno.Kennziffer));
						}
						var td = tr.appendChild(document.createElement("td"))
						td.className = className + annoObj.seite
						var txt = anno.Position.replace(/&nbsp;/ig," ")
											   .replace(/[ ]+/," ")
											   .replace(/^[ ]+/ig,"")
											   .replace(/[ ]+$/ig,"")
											   .replace(/[<]BR[>]/ig," ");
						if (!annoObj.seite) {
							td.innerHTML = txt
							var td = tr.appendChild(document.createElement("td"))
							td.className = className
							txt = ""
						} else {
							txt+= "<br>Einsatzort: <b>"
						}
						txt += anno.Einsatzort.replace(/&nbsp;/ig," ")
									   		  .replace(/[ ]+/," ")
									          .replace(/^[ ]+/ig,"")
									          .replace(/[ ]+$/ig,"")
						td.innerHTML = txt;
						td.title = anno.frei + " " + anno.fest;
					}
				}
			}
		}
		if (!annoObj.seite) {
			window.setTimeout("annoObj.headAdjust()",1)
		} else {
			if (welche=="fest") {
				_zeige(alle,"frei")
			} else {
				hideLast()
			}
		}
	} catch(e) {
		debugger;doError(e)
	}
}

function _insertTwitter() {
	try {
		var elem = annoObj.head
		while ((elem.tagName)&&(elem.tagName!='TABLE')&&(elem.parentNode)) {
			elem = elem.parentNode
		}
		var div = document.createElement("div")
		var div = elem.parentNode.insertBefore(div,elem)
		div.innerHTML = "<a href='http://twitter.com/top_itservices' target='_blank'>Abonnieren sie unsere Stellenangebote und Projektangebote auch über <img border=0 src='Pixels/twitter.gif'>Twitter.</a>"
		/*
		var tr = tbody.appendChild(document.createElement("tr"))
		var td = tr.appendChild(document.createElement("td"))
		td.colSpan = 3
		td.style.paddingTop = "5px"
		td.innerHTML = "&nbsp;<a href='http://twitter.com/top_itservices' target='_blank'>Abonnieren sie unsere Stellenangebote und Projektangebote auch über <img border=0 src='Pixels/twitter.gif'>Twitter.</a><br>&nbsp;"
		*/
	} catch(e) {
		debugger;doError(e)
	}
}

function hideLast() {
	try {
		var tr = annoObj.tbody2.rows
		var div = document.getElementById("divListBereich")
		for (var i=tr.length-1; i>=0; i--) {
			if (div.offsetHeight < div.scrollHeight) {
				tr[i].style.display="none"
			}
		}
		var span = document.getElementById("annoAbstand3")
		span.style.height = (495-div.offsetHeight)+"px"
	} catch(e) {
		debugger;doError(e)
	}
}

function _nachladen() {
	try {
		getAsync(655,[annoObj.homePageID],annoCHSaveBeschreibung)
	} catch(e) {
		debugger;doError(e)
	}
}

function annoCHSaveBeschreibung(ret) {
	try {
		var m = ret.split(annoObj.trenn2)
		for (var i=0; i<m.length; i++) {
			var n = m[i].split(annoObj.trenn1)
			var anno = annoObj.liste[n[0]]
			if (anno) { anno.such2+= annoNorm(n[1]) + " "; }
		}
		if (annoObj.param.was) {
			document.getElementById("suchTxt").value = annoObj.param.was
			document.getElementById("checkTxt").checked = (annoObj.param.wo=="such1")?true:false
			_suche()
		}
		/*
		var td = document.getElementById("listBereich")
		alert('Höhe: ' + td.offsetHeight + '\nBreite: ' + td.offsetWidth);
		*/
	} catch(e) {
		debugger;doError(e)
	}
}

function annoCHShowAnz(ret) {
	try {
		var m = ret.split(annoObj.trenn2);
		for (var i=0; i<m.length; i++) {
			var n = m[i].split(annoObj.trenn1)
			var anno = annoObj.liste[n[0]] = new function() {
				this.ID			= n[0];
				this.Position	= n[1];
				this.Einsatzort	= n[2];
				this.Kennziffer = n[3] + "-" + n[4]
				this.frei		= (clng(n[5]))?true:false
				this.fest		= (clng(n[6]))?true:false
				this.such1		= annoNorm(" " + n.join(" ") + " ");
				this.such2		= this.such1;
			}
		}
		hgoGetParam(annoObj.param);
		if (annoObj.param.was) {
			annoObj.nachladen()
		} else {
			annoObj.zeige(true)
			window.setTimeout("annoObj.nachladen()",1)
		}
	} catch(e) {
		debugger;doError(e)
	}
}

function clng(s) {
	try {
		switch (typeof(s)) {
			case "number":		return s;
			case "undefined":	return 0;
			case "string":		s = s.replace(/[^0-9.]/ig,"");
								s = "0"+s;
								return Math.round(s);
			default:			return 0;
		}
	} catch(e) {
		debugger;doError(e)
	}
}

function getAsync(nr,args,fun,fix) {
	try {
		var s = "/topBase/varServer.asp"
		if (fix) { s = fix; }
	  	var req = false;

	  	if (window.XMLHttpRequest) {	//andere Browser
	    	try {
	      		req = new XMLHttpRequest();
	    	} catch (e) {
	      		req = false;
	    	}
	  	} else if (window.ActiveXObject) {
		    // für Internet Explorer on Windows
	    	try {
	      		req = new ActiveXObject("Msxml2.XMLHTTP");
	    	} catch (e) {
	      		try {
	        		req = new ActiveXObject("Microsoft.XMLHTTP");
	      		} catch (e) {
	        		req = false;
	      		}
	    	}
		}
		req.open('POST', s, true);	//false steht für synchron, true für asynchron
		var sVars = "<Parameter>" + nr + annoObj.trenn4 + args.join("~°~") + "</Parameter>"
		req.send(sVars);
			req.onreadystatechange = function() {
				switch (req.readyState) {
					case 0:	//nicht initialisiert
							break;
					case 1:	//lädt
							break;
					case 2:	//fertig geladen
							break;
					case 3:	//wartet
							break;
					case 4:	//Daten einlesen ist fertig
					    	fun(unescape(req.responseText))
							break;
				}
			}
	} catch(e) {
		debugger;doError(e)
	}
}

function doError(e) {
	debugger;
	alert(e.message);
}

function annoNorm(s) {
	try {
		if (!s) return "";
		s = s.toLowerCase();
		s = s.replace(/c#/g, "csharp");				// Spezialbehandlug fuer Begriffe mit Sonderzeichen
		s = s.replace(/\.net/g, "dotnet");
		s = s.replace(/&nbsp;/ig," ");
		s = s.replace(/[<][^>][>]/ig, " ");
		s = s.replace(/[<]\/[^>][>]/ig, " ");
		s = s.replace(/[^a-z0-9äöüß#\+]/ig," ");
		s = s.replace(/([ ,;-])[#\+]+/ig,"$1");
		s = s.replace(/[ ][^ ]{1,2}[ ]/ig, " ");	// der schmeisst das C# raus!
		s = s.replace(/[ ][^ ]{1,2}[ ]/ig, " ");
		s = s.replace(/[ ]+/ig," ");
		return s;
	} catch(e) {
		debugger;doError(e)
	}
}

/*:
 *BESCHREIBUNG:     die Kopfzeile wird so formatiert, dass Kennziffer, Projekt und Einsatzort richtig über der Spalte stehen
 *CALLER:           _zeige() über setTimeout
 *ERSTELLT AM:      14.07.2008
 */
function annoCHHeadAdjust() {
	try {
		var th = annoObj.head.getElementsByTagName("TD");
		if ((annoObj.table.firstChild)&&(annoObj.table.firstChild.firstChild)) {
			var td = annoObj.table.firstChild.firstChild.getElementsByTagName("TD")
			if ((th)&&(td)&&(th[1])&&(td[1])) {
				th[0].style.width = (td[0].offsetWidth) + "px";
				th[1].style.width = (td[1].offsetWidth-4) + "px";
			}
		}
	} catch(e) {
		debugger;doError(e)
	}
}

function _suche(link) {
	try {
		var etwas = false;
		var wo = (document.getElementById("checkTxt").checked)?"such1":"such2"
		var was = document.getElementById("suchTxt").value
		was = annoNorm(was);
		try {
			var pageTracker = _gat._getTracker("UA-11434533-2");
			pageTracker._trackEvent('Jobs','suche',was)
		} catch(e) {}
		if (link) {
			window.open('JobsProjekte.html?wo='+wo+"&was="+was,'_self');
			return;
		}
		was = was.split(" ");
		for (var i=0; i<was.length; i++) {
			var s = was[i];
			s = s.replace(/[+]/ig,"[+]");
			was[i] = new RegExp(s,"ig");
		}
		for (var x in annoObj.liste) {
			var anno =annoObj.liste[x];
			anno.passend = true;
			var such = anno[wo];
			for (var i=0; i<was.length; i++) {
				if (!such.match(was[i])) {
					anno.passend = false;
					break;
				} else {
					etwas = true;
				}
			}
		}
		if (etwas) {
			annoObj.zeige();
		} else {
			annoObj.nix();
		}
	} catch(e) {
		doError(e)
	}
}

function tstEnter(e) {
	var key = lastKey;
	if ((typeof(event)!="undefined")&&(event)&&(event.type=="keypress")) {
		key = event.keyCode;
	}
	if (key==13) {
		annoObj.suche((annoObj.seite)?true:false);
	}
}

/*:
 *BESCHREIBUNG:     ermittelt die Übergabeparameter, falls es die unescape-Funktion gibt, werden Sonderzeichen der Form %HH umgesetzt
 *ERGEBNIS:         UebergabeParameter
 *GEÄNDERT AM:      06.02.2004
 */
function hgoGetParam(ret,s) {
	try {
		if (!ret) { ret = new Array(); }
	    if ((window.location.search)||(typeof(s)=="string")) {
	        var s = (typeof(s)=="string")?s:window.location.search;
	        if (s.length>0) {
	            if (s.indexOf('?')==0) { s = s.substr(1); }
	            var params = s.split("&");
	            for (var i=0; i<params.length; i++) {
	                var param = params[i].split("=");
	                if (typeof(unescape)=="function") {
	                    param[0] = unescape(param[0]);
	                    param[1] = unescape(param[1]);
	                }
	                switch (typeof(ret[param[0]])) {
	                	case "undefined":
	                						ret[param[0]] = param[1];
	                						break;
	                	case "string":
	                						ret[param[0]] = [ret[param[0]],param[1]]
	                						break;
	                	case "object":
	                						ret[param[0]].push(param[1])
	                						break;
	                }
	            }
	        }
	    }
	    return ret;
	} catch(e) {
		if (Hans) { debugger; }
	 	if (oDoProto) oDoProto.proto(e);
	}
}
