/* OMV JavaScript / © 2006 PXP Software AG / Author: Michael Jachmann
**************************************************************************/

/* required functions */
function checkRequiredFunctions() {
	supportListIe();
	/* makeTreesC(); */
	if(document.getElementById('PortalPortletOmvGatewayContentMask')) {
		divScroller();
	}
}

/* enables navigation for ie */
function supportListIe() {
	if (document.all) {
		uls = document.getElementsByTagName('UL');
		for(i = 0; i < uls.length; i++) {
            if (uls[i].className == 'PortalHeaderMetaRightList' || uls[i].className == 'PortalHeaderMetaRightListCountry' ||
            	uls[i].className == 'PortalHeaderMetaRightList2' || uls[i].className == 'PortalHeaderMetaRightListCountry2') {
                
                var lis = uls[i].getElementsByTagName('li');
				for (j = 0; j < lis.length; j++) {
                    if(lis[j].lastChild.tagName == 'UL') {
                        lis[j].onmouseover = function() { this.lastChild.style.left = 'auto'; }
                        lis[j].onmouseout = function() { this.lastChild.style.left = '-10000'; }
                    }
                }
            }
        }
    }
}

/* replace input values */
function checkInputValue(formElement) {
	if(formElement.value == "") {
		formElement.value = formElement.title;
	} else if (formElement.value != formElement.title) {
		formElement.value = formElement.value;
	} else if (formElement.value == formElement.title) {
		formElement.value = "";
	}
}

/* replace input background image */
function checkInputPassBg(formElement) {
	if(formElement.value == "") {
		formElement.style.backgroundImage = "url(images/HeaderMetaInputPassBg_de.gif)";
	} else {
		formElement.style.backgroundImage = "none";
	} 
}

/* clear input background image */
function clearInputPassBg(formElement) {
	formElement.style.backgroundImage = "none";
}

/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}

/*
Coded by Travis Beckham
http://www.squidfingers.com | http://www.podlob.com
version date: 01/24/03
*/

/* Cross-Browser Functions */
var dom = document.getElementById;
var iex = document.all;
var ns4 = document.layers;

function addEvent(event,method){
	this[event] = method;
	if(ns4) this.captureEvents(Event[event.substr(2,event.length).toUpperCase()]);
}
function removeEvent(event){
	this[event] = null;
	if(ns4) this.releaseEvents(Event[event.substr(2,event.length).toUpperCase()]);
}
function getElement(name,nest){
	nest = nest ? "document."+nest+"." : "";
	var el = dom ? document.getElementById(name) : iex ? document.all[name] : ns4 ? eval(nest+"document."+name) : false;
	el.css = ns4 ? el : el.style;
	el.getTop = function(){return parseInt(el.css.top) || 0};
	el.setTop = function(y){el.css.top = ns4 ? y: y+"px"};
	el.getHeight = function(){return ns4 ? el.document.height : el.offsetHeight};
	el.getClipHeight = function(){return ns4 ? el.clip.height : el.offsetHeight};
	el.hideVis = function(){el.css.visibility="hidden"};
	el.addEvent = addEvent;
	el.removeEvent = removeEvent;
	return el;
}
function getYMouse(e){
	return iex ? event.clientY : e.pageY;
}

document.addEvent = addEvent;
document.removeEvent = removeEvent;

/* Scroller Class */

ScrollObj = function(speed, dragHeight, trackHeight, trackObj, upObj, downObj, dragObj, contentMaskObj, contentObj){
	this.speed = speed;
	this.dragHeight = dragHeight;
	this.trackHeight = trackHeight;
	this.trackObj = getElement(trackObj);
	this.upObj = getElement(upObj);
	this.downObj = getElement(downObj);
	this.dragObj = getElement(dragObj);
	this.contentMaskObj = getElement(contentMaskObj);
	this.contentObj = getElement(contentObj,contentMaskObj);
	this.obj = contentObj+"Object";
	eval(this.obj+"=this");
	
	this.trackTop = this.dragObj.getTop();
	this.trackLength = this.trackHeight-this.dragHeight;
	this.trackBottom = this.trackTop+this.trackLength;
	this.contentMaskHeight = this.contentMaskObj.getClipHeight();
	this.contentHeight = this.contentObj.getHeight();
	this.contentLength = this.contentHeight-this.contentMaskHeight;
	this.scrollLength = this.trackLength/this.contentLength;
	this.scrollTimer = null;
	
	if(this.contentHeight <= this.contentMaskHeight){
		this.dragObj.hideVis();
	}else{
		var self = this;
		this.trackObj.addEvent("onmousedown", function(e){self.scrollJump(e);return false});
		this.upObj.addEvent("onmousedown", function(){self.scroll(self.speed);return false});
		this.upObj.addEvent("onmouseup", function(){self.stopScroll()});
		this.upObj.addEvent("onmouseout", function(){self.stopScroll()});
		this.downObj.addEvent("onmousedown", function(){self.scroll(-self.speed);return false});
		this.downObj.addEvent("onmouseup", function(){self.stopScroll()});
		this.downObj.addEvent("onmouseout", function(){self.stopScroll()});
		this.dragObj.addEvent("onmousedown", function(e){self.startDrag(e);return false});
		if(iex) this.dragObj.addEvent("ondragstart", function(){return false});
	}
}
ScrollObj.prototype.startDrag = function(e){
	this.dragStartMouse = getYMouse(e);
	this.dragStartOffset = this.dragObj.getTop();
	var self = this;
	document.addEvent("onmousemove", function(e){self.drag(e)});
	document.addEvent("onmouseup", function(){self.stopDrag()});
}
ScrollObj.prototype.stopDrag = function(){
	document.removeEvent("onmousemove");
	document.removeEvent("onmouseup");
}
ScrollObj.prototype.drag = function(e){
	var currentMouse = getYMouse(e);
	var mouseDifference = currentMouse-this.dragStartMouse;
	var dragDistance = this.dragStartOffset+mouseDifference;
	var dragMovement = (dragDistance<this.trackTop) ? this.trackTop : (dragDistance>this.trackBottom) ? this.trackBottom : dragDistance;
	this.dragObj.setTop(dragMovement);
	var contentMovement = -(dragMovement-this.trackTop)*(1/this.scrollLength);
	this.contentObj.setTop(contentMovement);
}
ScrollObj.prototype.scroll = function(speed){
	var contentMovement = this.contentObj.getTop()+speed;
	var dragMovement = this.trackTop-Math.round(this.contentObj.getTop()*(this.trackLength/this.contentLength));
	if(contentMovement > 0){
		contentMovement = 0;
	}else if(contentMovement < -this.contentLength){
		contentMovement = -this.contentLength;
	}
	if(dragMovement < this.trackTop){
		dragMovement = this.trackTop;
	}else if(dragMovement > this.trackBottom){
		dragMovement = this.trackBottom;
	}
	this.contentObj.setTop(contentMovement);
	this.dragObj.setTop(dragMovement);
	this.scrollTimer = window.setTimeout(this.obj+".scroll("+speed+")",25);
}
ScrollObj.prototype.stopScroll = function(){
	if(this.scrollTimer){
		window.clearTimeout(this.scrollTimer);
		this.scrollTimer = null;
	}
}
ScrollObj.prototype.scrollJump = function(e){
	var currentMouse = getYMouse(e);
	var dragDistance = currentMouse-(this.dragHeight/2);
	var dragMovement = (dragDistance<this.trackTop) ? this.trackTop : (dragDistance>this.trackBottom) ? this.trackBottom : dragDistance;
	this.dragObj.setTop(dragMovement);
	var contentMovement = -(dragMovement-this.trackTop)*(1/this.scrollLength);
	this.contentObj.setTop(contentMovement);
}

/* Misc Functions */

function fixNetscape4(){
	if(ns4origWidth != window.innerWidth || ns4origHeight != window.innerHeight){
		window.location.reload();
	}	
}
if(document.layers){
	ns4origWidth = window.innerWidth;
	ns4origHeight = window.innerHeight;
	window.onresize = fixNetscape4;
}

/* required for omv corporate site */

function divScroller(){
	// special style for scrolling
	document.getElementById('PortalPortletOmvGatewayContentMask').style.overflow = "hidden";
	document.getElementById('PortalPortletOmvGatewayDrag').style.display = "block";
	document.getElementById('PortalPortletOmvGatewayTrack').style.display = "block";
	// speed, dragHeight, trackHeight, trackObj, upObj, downObj, dragObj, contentMaskObj, contentObj
	myScroll = new ScrollObj(6,80,120,"PortalPortletOmvGatewayTrack","PortalPortletOmvGatewayUp","PortalPortletOmvGatewayDown","PortalPortletOmvGatewayDrag","PortalPortletOmvGatewayContentMask","PortalPortletOmvGatewayContent");
}

window.onload = checkRequiredFunctions;

/*
Converts an unordered list to an explorer-style tree, with clickable icons
http://www.kryogenix.org/code/browser/aqlists/
Stuart Langridge, November 2002
sil@kryogenix.org
*/

function makeTreesC() {
    // We don't actually need createElement, but we do
    // need good DOM support, so this is a good check.
    if (!document.createElement) return;
    
    uls = document.getElementsByTagName("ul");
    for (uli=0;uli<uls.length;uli++) {
        ul = uls[uli];
        if (ul.nodeName == "UL" && ul.className == "PortalPortletContentSitemap") {
            processULELC(ul);
				openUL(ul);
        }
    }
}

function processULELC(ul) {
    if (!ul.childNodes || ul.childNodes.length == 0) return;
    // Iterate LIs
    for (var itemi=0;itemi<ul.childNodes.length;itemi++) {
        var item = ul.childNodes[itemi];
        if (item.nodeName == "LI") {
            // Iterate things in this LI
            var a;
            var subul;
	    subul = "";
            for (var sitemi=0;sitemi<item.childNodes.length;sitemi++) {
                var sitem = item.childNodes[sitemi];
                switch (sitem.nodeName) {
                    case "A": a = sitem; break;
                    case "UL": subul = sitem; 
                               processULELC(subul);
                               break;
                }
            }
            if (subul) {
                associateELC(a,subul);
            } else {
                a.parentNode.className = "PortalPortletContentSitemapIcon";
            }
        }
    }
}

function associateELC(a,ul) {
    if (a.parentNode.className.indexOf('PortalPortletContentSitemapOpen') == -1)
      a.parentNode.className = 'PortalPortletContentSitemapClosed';
	a.onclick = function () {
        this.parentNode.className = (this.parentNode.className=='PortalPortletContentSitemapOpen') ? "PortalPortletContentSitemapClosed" : "PortalPortletContentSitemapOpen";
        return true;
    }
}

function openUL(ul) {
	if (!ul.childNodes || ul.childNodes.length == 0) return;
}

/* functions to uncrypt the prior crypted email adresses onClick on a mailTo link */
function UnCryptMailto( s )
{
	var n = 0;
	var r = "";
	for( var i = 0; i < s.length; i++)
		{
			n = s.charCodeAt( i );
			if( n >= 8364 )
			{
				n = 128;
			}
			r += String.fromCharCode( n - 1 );
		}
	return r;
}

function linkTo_UnCryptMailto( s )
	{
		location.href=UnCryptMailto( s );
	}

function remove_defaulttext(pObject, pDefaultValue)
	{
		if (pObject.value == pDefaultValue)
		{
			pObject.value = '';
		}
	}

