
var propertie = {

// this is the main (default) host
home: 'www',

// the domain name without hostname
//domain: 'tuxnet24.de',

// the class name of the last li- element
classend: 'lastlist',

// the id of the navigation div
oHandId: 'oPanel',

// the id of the event div
oEventId: 'oSwitch',

// id of the open image
imgObj: 'iSwitch',

// the begin of the content of the 'oHandl' object
htmlstart: "<div id=\"pLogo\">\n"
		 + "\t<span class=\"host\">%h</span>\n"
		 + "\t<br clear=\"all\"/>\n"
		 + "\t<img src=\"http://www.tuxnet24.de/panel/img/tuxnet24.png\"/>\n"
		 + "</div>\n"
		 + "<div id=\"pLinks\">\n"
		 + "\t<ul>\n",

// the end of the content of the 'oHandl' object
htmlend: "\t</ul>\n</div>\n",

// the styles of 'oEvent' object
oEventStyle: {
	position: 'absolute',
	display: 'block',
	top: '0px',
	left: '0px',
	width: '100%',
	height: '25px',
	backgroundColor: 'transparent'
},

// the styles of 'oHandl' object
oHandlStyle: {
	position: 'absolute',
	top: '0px',
	left: '10px',
	right: '10px',
	padding: '5px 5px 0px 25px',
	zIndex: 9000,
	overflow: 'hidden',
	display: 'none',
	height: '95px',
	backgroundImage: 'url(http://www.tuxnet24.de/panel/img/header.jpg)',
	backgroundRepeat: 'repeat-x'
}

};

/* DO NOT EDIT HERE BELOW */

if (window.Node && Node.prototype && !Node.prototype.contains) {
    Node.prototype.contains = function (arg) {
        return !!(this.compareDocumentPosition(arg) & 16);
    };
}

// function to include stylesheet files
if(typeof document.createStyleSheet === 'undefined') {
    document.createStyleSheet = (function() {
        function createStyleSheet(href) {
            if(typeof href !== 'undefined') {
                var element = document.createElement('link');
                element.type = 'text/css';
                element.rel = 'stylesheet';
                element.href = href;
            }
            else {
                var element = document.createElement('style');
                element.type = 'text/css';
            }

            document.getElementsByTagName('head')[0].appendChild(element);
            var sheet = document.styleSheets[document.styleSheets.length - 1];
            return sheet;
        }
        return createStyleSheet;
    })();
}

// function to include javascript files
document.createJavaScript = function(src) {

var note = document.createElement('script');
note.setAttribute("type","text/javascript");
note.setAttribute("src", src);

if (typeof note !== "undefined")
	document.getElementsByTagName("head")[0].appendChild(note);

};

// function to attach events to an object
document.addEvent = function(obj, evType, fn) {

if (obj.addEventListener){
	obj.addEventListener(evType, fn, true);
	return true;
} else if (obj.attachEvent){
	var r = obj.attachEvent("on"+evType, fn);
	return r;
} else {
	return false;
}

};



/**
 * The Panel class
 */
function Panel(props) {

	even = this;
	even.param = {
		timerlen: 5,
		slideAniLen: 250,
		timerID: new Array(),
		startTime: new Array(),
		obj: new Array(),
		endHeight: new Array(),
		moving: new Array(),
		dir: new Array()
	};

};


Panel.prototype.slidedown = function(objname) {

if(even.param.moving[objname]) return;
// cannot slide down something that is already visible
if (!document.getElementById(objname)) return;
if(document.getElementById(objname).style.display != "none") return;

if (propertie.imgObj && document.getElementById([propertie.imgObj]))
	document.getElementById([propertie.imgObj]).style.display = 'none';

even.param.moving[objname] = true;
even.param.dir[objname] = "down";
this.startslide(objname);

};

Panel.prototype.slideup = function(objname) {

if (!document.getElementById(objname)) return;
if(even.param.moving[objname]) return;
// cannot slide up something that is already hidden
if(document.getElementById(objname).style.display == "none") return;

if (propertie.imgObj && document.getElementById([propertie.imgObj]))
	document.getElementById([propertie.imgObj]).style.display = 'block';

even.param.moving[objname] = true;
even.param.dir[objname] = "up";
this.startslide(objname);

};

Panel.prototype.startslide = function(objname) {

if (!document.getElementById(objname)) return;
even.param.obj[objname] = document.getElementById(objname);
even.param.endHeight[objname] = parseInt(even.param.obj[objname].style.height);
even.param.startTime[objname] = (new Date()).getTime();

//if (!even.param.obj[objname].style.height) even.param.obj[objname].style.height = "1px";

if(even.param.dir[objname] == "down"){
	even.param.obj[objname].style.height = "1px";
}

even.param.obj[objname].style.display = "block";
even.param.timerID[objname] = setInterval( 'even.slidetick("' + objname + '");', even.param.timerlen);

};

Panel.prototype.slidetick = function(objname) {

var elapsed = (new Date()).getTime() - even.param.startTime[objname];
if (elapsed > even.param.slideAniLen) this.endSlide(objname)
else {
	var d =Math.round(elapsed / even.param.slideAniLen * even.param.endHeight[objname]);
	if(even.param.dir[objname] == "up") d = even.param.endHeight[objname] - d;
	even.param.obj[objname].style.height = d + "px";
}
return;

};

Panel.prototype.endSlide = function(objname) {

clearInterval(even.param.timerID[objname]);
if(even.param.dir[objname] == "up") even.param.obj[objname].style.display = "none";
even.param.obj[objname].style.height = even.param.endHeight[objname] + "px";

delete(even.param.moving[objname]);
delete(even.param.timerID[objname]);
delete(even.param.startTime[objname]);
delete(even.param.endHeight[objname]);
delete(even.param.obj[objname]);
delete(even.param.dir[objname]);
return;

};

Panel.prototype.toggleSlide = function(objname) {

if (!document.getElementById(objname)) return;
if(document.getElementById(objname).style.display == "none" ){
	// div is hidden, so let's slide down
	this.slidedown(objname);
} else {
	// div is not hidden, so slide up
	this.slideup(objname);
}

};

/*** CONTENT ***/
Panel.prototype.init = function(objname) {

if (!objname) objname = propertie.oHandId;

// get only the host of the FQDN
var host=window.location.hostname.split("\.");
var html="";

for (var i=0; i<nav.length; i++) {

	// we go next, if the current hostname was clicked
	// or the current entry is equal to variable 'home'
	if (nav[i]['hst'] != propertie.home && nav[i]['hst'] == host[0]) continue;

	// set the class 'lastlist' on the last entry
	if (typeof nav[parseInt(i+1)] === 'undefined') var myclass=" class=\""+propertie.classend+"\"";
	else var myclass = "";

	// if the hostname of the last entry was set, set the class on the penultimate entry
	if (nav[parseInt(nav.length-1)]['hst'] == host[0] && nav[i]['hst'] == nav[parseInt(nav.length-2)]['hst']) {
		myclass=" class=\"lastlist\"";
	}

	// if an entry has a image defined, we use the image as link text
	var link = typeof nav[i]['img'] !== 'undefined' ?
		'<img src="'+nav[i]['img']+'"/>' : nav[i]['txt'];

	// build the html list
	html += "\t\t<li"+myclass+"><a href=\""+nav[i]['src']+"\" "
		   + "title=\""+nav[i]['dsc']+"\">"+link+"</a></li>\n";

}

// replace %h placeholder with the current hostname and %d with propertie.domain
propertie.htmlstart = propertie.htmlstart.replace('%h', host[0]);
//propertie.htmlstart = propertie.htmlstart.replace('%d', propertie.domain);

/*** OBJECTS ***/
/*** oEvent ***/
// create the 'oEvent' object
var oEvent = even.objCreate(propertie.oEventId);

// set styles on the 'oEvent' object
even.objStyles(oEvent.id, propertie.oEventStyle);

// add content on the 'oEvent' object
even.objContent(oEvent.id, '<img src="http://www.tuxnet24.de/panel/img/eject.png" style="margin:auto;" id="iSwitch"/>');


/*** oHandl ***/
// set styles on the 'oHandl' object
var oHandl = even.objCreate(objname);

// set styles on the 'oHandl' object
even.objStyles(oHandl.id, propertie.oHandlStyle);

// add content on the 'oHandl' object
even.objContent(oHandl.id, propertie.htmlstart+html+propertie.htmlend);

// add attributes on the 'oHandl' object
even.objAttrib(oHandl.id, 'className', 'panelLook radius transparent shadow');
//alert(oHandl.style.height)

/*** EVENTS ***/
// attach onmouseover event on the 'oEvent' object
oEvent.onmouseover = function(event) {
	var event = window.event || event;
	var fromElement = event.relatedTarget || event.fromElement || false;
	if (fromElement !== false && !this.contains(fromElement)) {
		even.slidedown(objname);
	}
};

// attach onmouseover event on the 'oHandl' object
oHandl.onmouseover = function(event) {
	var event = window.event || event;
	var fromElement = event.relatedTarget || event.fromElement || false;
	if (fromElement !== false && !this.contains(fromElement)) {
		even.slidedown(objname);
	}
};

// attach onmouseout event on the 'oHandl' object
oHandl.onmouseout=function(event) {
	var event = window.event || event;
	var toElement = event.relatedTarget || event.toElement || false;
	if (toElement !== false && !this.contains(toElement)) {
		even.slideup(objname);
	}
};

};


Panel.prototype.objCreate = function(id, parent) {

var element = null;
if (!parent) { var parents='body'; parent=0; }
else { var parents='div'; }

if (!document.getElementById([id])) {
	element = document.createElement("div");
	element.setAttribute( 'id', id );
} else {
	element = document.getElementById([id]);

}

if (parents == 'body') 
	document.getElementsByTagName(parents)[parent].appendChild(element);
return element;

};

Panel.prototype.objStyles = function(o, styles) {

for ( var prop in styles ) {
	if (!styles.hasOwnProperty(prop)) continue;
	this.objCss(o, prop, styles[prop]);
}

};

Panel.prototype.objCss = function(o, keys, value) {

if ((typeof(o)==='object')&&(o instanceof Array)) {
	for (var i=0; i<o.length; ++i) {
		if (document.all && document.all[o[i]]) {
			document.all[o[i]].style[keys] = value;
		} else if (document.layers && document.layers[o[i]]) {
			document.layers[o[i]].style[keys] = value;
		} else if (document.getElementById && document.getElementById([o[i]])) {
			document.getElementById([o[i]]).style[keys] = value;
		}
	}
} else {
	if (document.all && document.all[o]) {
		document.all[o].style[keys] = value;
	} else if (document.layers && document.layers[o]) {
		document.layers[o].style[keys] = value;
	} else if (document.getElementById && document.getElementById([o])) {
		document.getElementById([o]).style[keys] = value;
	}
}

};

Panel.prototype.objContent = function(o, text) {

if (document.all && document.all[o]) {
	document.all[o].innerHTML = text;
} else if (document.layers && document.layers[o]) {
	document.layers[o].document.open();
	document.layers[o].document.write(text);
	document.layers[o].document.close(); 
} else if (document.getElementById && document.getElementById([o])) {
	document.getElementById([o]).innerHTML = text;
}

};

Panel.prototype.objAttrib = function(o, keys, value) {

if (document.all && document.all[o]) {
	document.all[o][keys] = value;
} else if (document.layers && document.layers[o]) {
	document.layers[o][keys] = value;
} else if (document.getElementById && document.getElementById([o])) {
	document.getElementById([o])[keys] = value;
}

};

// create the panel object
var panel = new Panel();

// add stylesheet to the page header
document.createStyleSheet('http://www.tuxnet24.de/panel/css/default.css');

// add javascript to the page header
document.createJavaScript('http://www.tuxnet24.de/panel/js/data.js');

// start init function on window.onload
document.addEvent(window, 'load', panel.init);

// EOF

