var firefox = document.getElementById&&!document.all;
var isDrag=false;
var z=100;
var x,y;
var tx,ty;
var dobj;

var isResize = false;

var imgpath = "img/";
var widgetpath = "widgets/";


/* Try */

var Try = {
  these: function() {
    var returnValue;

    for (var i = 0; i < arguments.length; i++) {
      var lambda = arguments[i];
      try {
        returnValue = lambda();
        break;
      } catch (e) {}
    }

    return returnValue;
  }
}

/* Erzeugt dass Object "Class" mit Funktion create zum ausführen des constructors initialize */
var Class = {
  create: function() {
    return function() {
      this.initialize.apply(this, arguments);
    }
  }
}

/* object */

Object.extend = function(destination, source) {
    for (var property in source) {
        destination[property] = source[property];
    }
    return destination;
}

Object.extend(Function.prototype, {
  argumentNames: function() {
    var names = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip");
    return names.length == 1 && !names[0] ? [] : names;
  },

  bind: function() {
    if (arguments.length < 2 && arguments[0] === undefined) return this;
    var __method = this, args = $A(arguments), object = args.shift();
    return function() {
      return __method.apply(object, args.concat($A(arguments)));
    }
  },

  bindAsEventListener: function() {
    var __method = this, args = $A(arguments), object = args.shift();
    return function(event) {
      return __method.apply(object, [event || window.event].concat(args));
    }
  },

  curry: function() {
    if (!arguments.length) return this;
    var __method = this, args = $A(arguments);
    return function() {
      return __method.apply(this, args.concat($A(arguments)));
    }
  },

  delay: function() {
    var __method = this, args = $A(arguments), timeout = args.shift() * 1000;
    return window.setTimeout(function() {
      return __method.apply(__method, args);
    }, timeout);
  },

  wrap: function(wrapper) {
    var __method = this;
    return function() {
      return wrapper.apply(this, [__method.bind(this)].concat($A(arguments)));
    }
  },

  methodize: function() {
    if (this._methodized) return this._methodized;
    var __method = this;
    return this._methodized = function() {
      return __method.apply(null, [this].concat($A(arguments)));
    };
  }
});


/*Function.prototype.bind = function() {
  return function() {
    return this.apply(this, arguments);
  }
}*/

Function.prototype.bindIt = function() {
  var __method = this, args = $A(arguments), object = args.shift();
  return function() {
    return __method.apply(object, args.concat($A(arguments)));
  }
}


/* Slide + Effect */
var Effect = {
    times_done: 0,

    blink: function(time,bgcolor,fontcolor,nobgcolor,nofontcolor,div) {
        $(div).style.backgroundColor = bgcolor;
        $(div).style.color = fontcolor;
        window.setTimeout("Effect.blinkNone('"+time+"','"+bgcolor+"','"+fontcolor+"','"+nobgcolor+"','"+nofontcolor+"','"+div+"')",time);
    },

    blinkNone: function (time,bgcolor,fontcolor,nobgcolor,nofontcolor,div) {
        $(div).style.backgroundColor = nobgcolor;
        $(div).style.color = nofontcolor;
        window.setTimeout("Effect.blink('"+time+"','"+bgcolor+"','"+fontcolor+"','"+nobgcolor+"','"+nofontcolor+"','"+div+"')",time);
    },

    blinkOnce: function(time,bgcolor,fontcolor,nobgcolor,nofontcolor,div) {
        $(div).style.backgroundColor = bgcolor;
        $(div).style.color = fontcolor;
        window.setTimeout("Effect.blinkOnceNone('"+time+"','"+bgcolor+"','"+fontcolor+"','"+nobgcolor+"','"+nofontcolor+"','"+div+"')",time);
    },

    blinkOnceNone: function (time,bgcolor,fontcolor,nobgcolor,nofontcolor,div) {
        $(div).style.backgroundColor = nobgcolor;
        $(div).style.color = nofontcolor;
    }
}

var Slide = {
    slideOut: function(id,slideStart,slideEnd,millisec,fade,fadeStart,fadeEnd,fadeMillisec) {
        var speed = Math.round(millisec / 100);
	    var timer = 0;
    	if($(fade).style.display == 'block') {
    		for(i = slideEnd; i >= slideStart; i--) {
    			setTimeout("Slide.changeSlide(" + i + ",'" + id + "')",(timer * speed));
    			timer++;
    		}
    		if(fade) {
    			Slide.opacity(fade, 100, 0, 100);
    			setTimeout("$('" + fade + "').style.display='none'",100);
    		}
    	}
    	else if(slideStart < slideEnd) {
    		for(i = slideStart; i <= slideEnd; i++) {
    			setTimeout("Slide.changeSlide(" + i + ",'" + id + "')",(timer * speed));
    			timer++;
    		}
    		if(fade) {
                if (typeof fadeStart == "undefined") fadeStart = '0';
                if (typeof fadeEnd == "undefined") fadeEnd = '100';
                if (typeof fadeMillisec == "undefined") fadeMillisec = '300';
    			setTimeout("Slide.opacity('" + fade + "', " + fadeStart + ", " + fadeEnd + ", " + fadeMillisec + ")",millisec);
    		}
    	}
    },

    opacity: function(id, opacStart, opacEnd, millisec) {
        var speed = Math.round(millisec / 100);
    	var timer = 0;
       	if(opacStart > opacEnd) {
    		for(i = opacStart; i >= opacEnd; i--) {
    			setTimeout("Slide.changeOpac(" + i + ",'" + id.id + "')",(timer * speed));
    			timer++;
    		}
    	}
    	else if(opacStart < opacEnd) {
            if (typeof id == "object")
                id.style.display = 'block';
            else
    		    $(id).style.display='block';
    		for(i = opacStart; i <= opacEnd; i++) {
       		    setTimeout("Slide.changeOpac(" + i + ",'" + id.id + "')",(timer * speed));
        		timer++;
            }
        }
    },

    fade: function(id, opacStart, opacEnd, millisec) {
        var speed = Math.round(millisec / 100);
    	var timer = 0;

       	if(opacStart > opacEnd) {
    		for(i = opacStart; i >= opacEnd; i--) {
    			setTimeout("Slide.changeOpac(" + i + ",'" + id.id + "')",(timer * speed));
    			timer++;
    		}
    	}
    	else if(opacStart < opacEnd) {
    		$(id).style.display='block';
    		for(i = opacStart; i <= opacEnd; i++) {
       		    setTimeout("Slide.changeOpac(" + i + ",'" + id.id + "')",(timer * speed));
        		timer++;
            }
        }
    },

    changeOpac: function(opacity, id) {
        if (typeof id == "object")
            var object = id;
        else {
            var object = $(id);
        }
	    object.style.opacity = (opacity / 100);
	    object.style.MozOpacity = (opacity / 100);
	    object.style.KhtmlOpacity = (opacity / 100);
	    object.style.filter = "alpha(opacity=" + opacity + ")";
    },

   changeSlide: function(slidePoint, id) {
        var object = $(id).style;
	    object.height = slidePoint + 'px';
   }
}

/* serialize */

serialize = function(array) {
    if(typeof giveback == 'undefined')
              var giveback = new String();

    giveback = giveback+'a:'+array.length+':{';
    for(var position in array) {
    	if(typeof position == 'object')
            array.serialize(position);
    	else {
    		if(typeof position == 'string')
                giveback = giveback+'s'+':'+position.length+':"'+position+'";';
    		if(typeof position == 'number')
                giveback = giveback+'i:'+position+';';
    		if(typeof array[position] == 'string')
                giveback = giveback+'s'+':'+array[position].length+':"'+array[position]+'";';
    		if(typeof array[position] == 'number')
                giveback = giveback+'i:'+array[position]+';';
    	}
    }
    giveback = giveback+'}';
    return giveback;
}

/* MakeDragAble */

function MakeDragable(div) {
    var z = 0;
    for (var i = 0; i < MakeDragable.arguments.length; ++i) {
        MakeDragable.arguments[i] = $(MakeDragable.arguments[i]);
        if(typeof MakeDragable.arguments[i] != "object") continue;
        MakeDragable.arguments[i].name = "dragable";
        MakeDragable.arguments[i].style.position = "absolute";
        if (MakeDragable.arguments[i].style.left == '')
            MakeDragable.arguments[i].style.left = 0;
        if (MakeDragable.arguments[i].style.top == '')
            MakeDragable.arguments[i].style.top = 0;
        z++;
    }
    if (z > 0)
        return true;
    return false;
}

/* String extend */

String.prototype.trim = function() {
    return (this.replace(/\s+/g,""));
}

String.prototype.capitalize = function() {
    return this.toLowerCase().replace(/\b[a-z]/g, function(match){
	    return match.toUpperCase();
	});
}


String.prototype.isNullOrEmpty = function() {
    if(this == null || this.length == 0) {
        return true;
    }
    return false;
}

/* Array extend */

Array.prototype.removeDuplicates = function () {
	for(i = 1; i < this.length; i++){
		if(this[i][0] == this[i-1][0]){
			this.splice(i,1);
		}
	}
}

Array.prototype.indexOf = function( v, b, s ) {
    for( var i = +b || 0, l = this.length; i < l; i++ ) {
        if( this[i]===v || s && this[i]==v ) { return i; }
    }
    return -1;
}

Array.prototype.remove=function(s){
    for(i=0;i<this .length;i++){
        if(i == s) this.splice(i, 1);
    }
}

var $A = Array.from = function(iterable) {
  if (!iterable) return [];
  if (iterable.toArray) {
    return iterable.toArray();
  } else {
    var results = [];
    for (var i = 0, length = iterable.length; i < length; i++)
      results.push(iterable[i]);
    return results;
  }
}

/* getElementsByClassName function */

document.getElementsByClassName = function(className) {
        if (document.getElementsByClassName.arguments.length > 1)
            var elementsArray = new Array();
        var elements = document.body.getElementsByTagName('*');
        for (var i = 0; i < elements.length; ++i) {
            if (document.getElementsByClassName.arguments.length > 1) {
                for (var j = 0; j < document.getElementsByClassName.arguments.length; ++j) {
                    if (elements[i].className == document.getElementsByClassName.arguments[j]) {
                        elementsArray.push(elements[i]);
                    }
                }
            }
            else {
                if (elements[i].className == className)
                    return elements[i];
            }
        }
        if (document.getElementsByClassName.arguments.length > 1 && elementsArray.length > 0)
            return elementsArray;
        return false;
}

/* getElementByID function */

function $(div) {
    if ($.arguments.length == 1) {
        if (typeof document.getElementById(div) != "undefined")
            return document.getElementById(div);
        return false;
    }
    var divArray = new Array();
    for (var i = 0; i < $.arguments.length; ++i) {
        if (typeof document.getElementById($.arguments[i]) != "undefined")
            divArray.push(document.getElementById($.arguments[i]));
    }
    if (divArray.length > 0)
        return divArray;
    return false;
}

/* getForm Function */

function $F(input) {
    if ($F.arguments.length > 1)
        var elementsArray = new Array();
    for (var i = 0; i < document.forms.length; ++i) {
        if (document.forms[i].elements.length > 0) {
            for (var j = 0; j < document.forms[i].elements.length; ++j) {
                if ($F.arguments.length == 1) {
                    if (input == document.forms[i].elements[j].name) {
                        switch (document.forms[i].elements[j].type) {
                            case 'radio':
                                if (document.forms[i].elements[j].checked == true)
                                    return document.forms[i].elements[j].value;
                                else
                                    return 'undefined';
                            break;
                            case 'checkbox':
                                if (document.forms[i].elements[j].checked == true)
                                    return document.forms[i].elements[j].value;
                                else
                                    return 'undefined';
                            break;
                            default:
                                return document.forms[i].elements[j].value;
                            break;
                        }
                    }
                }
                else {
                    for (var x = 0; x < $F.arguments.length; ++x) {
                        if ($F.arguments[x] == document.forms[i].elements[j].name) {

                            switch (document.forms[i].elements[j].type) {
                                case 'radio':
                                    if (document.forms[i].elements[j].checked == true)
                                        elementsArray.push(document.forms[i].elements[j].value);
                                    else
                                        elementsArray.push('undefined');
                                break;
                                case 'checkbox':
                                    if (document.forms[i].elements[j].checked == true)
                                        elementsArray.push(document.forms[i].elements[j].value);
                                    else
                                        elementsArray.push('undefined');
                                break;
                                default:
                                    elementsArray.push(document.forms[i].elements[j].value);
                                break;
                            }
                        }
                    }
                }
            }
        }
    }
    if ($F.arguments.length > 1 && elementsArray.length > 0)
        return elementsArray;
    return false;
}

/* Mouse Class */

var Mouse = {
    onMove: function() {
        document.onmousemove = this.mouseMove;
    },

    mouseMove: function(ev) {
	    ev = ev || window.event;
	    var mousePos = mouseCoords(ev);
    },

    mouseCoords: function(ev) {
	    if(ev.pageX || ev.pageY) {
		    return {x:ev.pageX, y:ev.pageY};
	    }
	    return {
		    x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		    y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	    };
    }
}

/* Form Class */

var Form = {
    disableFormInputs: function (form) {
        var notdisable = new Array();
        if (Form.disableFormInputs.arguments.length > 1) {
            if (Form.disableFormInputs.arguments.length == 2)
                notdisable = Form.disableFormInputs.arguments[1];
            else {
                for (var i = 1; i < Form.disableFormInputs.arguments.length; ++i) {
                    notdisable.push(Form.disableFormInputs.arguments[i]);
                }
            }
        }
        for (var i = 0; i < document.forms[form].elements.length; ++i) {
            if (typeof notdisable == "object") {
                if (notdisable.indexOf(document.forms[form].elements[i].name) != -1)
                    continue;
            }
            else {
                if (document.forms[form].elements[i].name == notdisable)
                    continue;
            }
            document.forms[form].elements[i].disabled = true;
        }
    },

    enableFormInputs: function (form) {
        var notenable = new String();
        if (Form.enableFormInputs.arguments.length > 1) {
            if (Form.enableFormInputs.arguments.length == 2)
                notenable = Form.enableFormInputs.arguments[1];
            else {
                var notenable = new Array();
                for (var i = 1; i < Form.enableFormInputs.arguments.length; ++i) {
                    notenable.push(Form.enableFormInputs.arguments[i]);
                }
            }
        }
        for (var i = 0; i < document.forms[form].elements.length; ++i) {
            if (typeof notenable == "object") {
                if (notenable.indexOf(document.forms[form].elements[i].name) != -1)
                    continue;
            }
            else {
                if (document.forms[form].elements[i].name == notenable)
                    continue;
            }
            document.forms[form].elements[i].disabled = false;
        }
    },

    getElements: function(input) {
        if (Form.getElements.arguments.length > 1)
            var elementsArray = new Array();
        for (var i = 0; i < document.forms.length; ++i) {
            if (document.forms[i].elements.length > 0) {
                for (var j = 0; j < document.forms[i].elements.length; ++j) {
                    if (Form.getElements.arguments.length == 1) {
                        if (input == document.forms[i].elements[j].name) {
                            switch (document.forms[i].elements[j].type) {
                                case 'radio':
                                    if (document.forms[i].elements[j].checked == true)
                                        return document.forms[i].elements[j];
                                    else
                                        return 'undefined';
                                break;
                                case 'checkbox':
                                    if (document.forms[i].elements[j].checked == true)
                                        return document.forms[i].elements[j];
                                    else
                                        return 'undefined';
                                break;
                                default:
                                    return document.forms[i].elements[j];
                                break;
                            }
                        }
                    }
                    else {
                        for (var x = 0; x < Form.getElements.arguments.length; ++x) {
                            if (Form.getElements.arguments[x] == document.forms[i].elements[j].name) {

                                switch (document.forms[i].elements[j].type) {
                                    case 'radio':
                                        if (document.forms[i].elements[j].checked == true)
                                            elementsArray.push(document.forms[i].elements[j]);
                                        else
                                            elementsArray.push('undefined');
                                    break;
                                    case 'checkbox':
                                        if (document.forms[i].elements[j].checked == true)
                                            elementsArray.push(document.forms[i].elements[j]);
                                        else
                                            elementsArray.push('undefined');
                                    break;
                                    default:
                                        elementsArray.push(document.forms[i].elements[j]);
                                    break;
                                }
                            }
                        }
                    }
                }
            }
        }
        if (Form.getElements.arguments.length > 1 && elementsArray.length > 0)
            return elementsArray;
        return false;
    },

    getSerializer : function(formname) {
       if (document.forms[formname].elements.length == 0)
          return false;

       var getSer = new String();
       var elementValue;
       for (var i = 0; i < document.forms[formname].elements.length; ++i) {
          if (document.forms[formname].elements[i].value.length == 0)
            elementValue = 'undefined';
          else
            elementValue = $F(document.forms[formname].elements[i].name);

          if (getSer.length > 0)
              getSer += "&"+ document.forms[formname].elements[i].name +"="+ elementValue;
          else
              getSer += document.forms[formname].elements[i].name +"="+ elementValue;
       }
       return getSer;
    }
}

PeriodicalExecuter = function(func, intv, times) {
    if (typeof times == 'undefined')
        times = 0;

    if (!func.match(/\(/) || !func.match(/\)/))
        func = func+'()';

    setTimeout(func, intv);
    func = func.replace(/'/g,"\\'");
    if (times==0)
        setTimeout("new PeriodicalExecuter('"+func+"', '"+intv+"')", intv);
    else if (times > 1)
        setTimeout("new PeriodicalExecuter('"+func+"', '"+intv+"','"+times-1+"')", intv);
}

/* Color Pickup */

ColorPickup = function(name,size,img,div,bgcolor,value) {
    if (typeof value == "undefined")
        value = "";
    this.ColorDec2Hex = function(v) {
        v = v.toString(16);
    	for(; v.length < 6; v = '0' + v);
    	return v;
    }

    this.ColorGenerateMac = function() {
    	var s = '';
    	var c = 0,n = 1;
    	var r,g,b;
    	for (j = 0; j < 15; j ++) {
    		s += "<tr>";
    		for (k = 0; k < 3; k ++)
    			for (i = 0; i <= 5; i++){
    				if(j<12){
    				s += this.ColorBuildCell( 255-(Math.floor(j / 2) * 51), 255-(k * 51 + (j % 2) * 51 * 3),255-(i * 51), 8, 10);
    				}else{
    					if(n<=14){
    						r = 255-(n * 17);
    						g=b=0;
    					}else if(n>14 && n<=28){
    						g = 255-((n-14) * 17);
    						r=b=0;
    					}else if(n>28 && n<=42){
    						b = 255-((n-28) * 17);
    						r=g=0;
    					}else{
    						r=g=b=255-((n-42) * 17);
    					}
    					s += this.ColorBuildCell( r, g,b, 8, 10);
    					n++;
    				}
    			}
    		s += "</tr>";
    	}
    	return s;
    }


    this.ColorBuildCell = function(R, G, B, w, h) {
	    return '<td style="background-color:#' + this.ColorDec2Hex((R << 16) + (G << 8) + B) + ';border:none;cursor:pointer;"><a href="javascript:ColorPaletteChoose(\''+name+'\',\'' + this.ColorDec2Hex((R << 16) + (G << 8) + B) + '\'); ColorPaletteClose(\''+name+'-palette\');" style="border:none;color:#'+ this.ColorDec2Hex((R << 16) + (G << 8) + B) +';text-decoration:none;" onmouseover="ColorTextRefresh(\''+name+'-textoutput\',\'' + this.ColorDec2Hex((R << 16) + (G << 8) + B) + '\')"><div style="width:5px;height:5px;border:none;cursor:pointer;">&nbsp;</div></a></td>';
    }

    if (navigator.userAgent.indexOf("MSIE") < 1) {
        var add = "";
        if (value != "")
            add = "background-color:"+value+";";
    }

    var input = document.createElement("input");
    if (navigator.userAgent.indexOf("MSIE") < 1)
        input.setAttribute("style", 'background:transparent url(\''+img+'\') no-repeat right; cursor: pointer;'+add);

    if (navigator.userAgent.indexOf("MSIE") > 1)
        input.setAttribute("readOnly", "readOnly");
    else
        input.setAttribute("readonly", "readonly");

    input.setAttribute("name", name);
    input.setAttribute("id", name);
    if (navigator.userAgent.indexOf("MSIE") > 1)
        input.setAttribute("onclick", function() { ColorOpenPalette(name+"-palette"); });
    else
        input.setAttribute("onclick", "ColorOpenPalette('"+name+"-palette\')");
    input.setAttribute("size", size);
    input.setAttribute("value", value);

    var textdiv = document.createElement("div");
    if (navigator.userAgent.indexOf("MSIE") < 1)
        textdiv.setAttribute("style", 'float:left; width:110px; background-color:'+bgcolor+';');
    textdiv.setAttribute("id", name+"-textdiv");
    textdiv.innerHTML = 'Color: <span id="'+name+'-textoutput">&nbsp;</span>';

    var link = document.createElement("a");
    link.setAttribute("href", 'javascript:ColorPaletteClose(\''+name+'-palette\');');
    link.innerHTML = 'Close';

    var closelink = document.createElement("div");
    if (navigator.userAgent.indexOf("MSIE") < 1)
        closelink.setAttribute("style", 'float:right; text-align:right; background-color:'+bgcolor+';');
    closelink.setAttribute("id", name+"-closelink");
    closelink.appendChild(link);

    var palette = document.createElement("div");
    if (navigator.userAgent.indexOf("MSIE") < 1)
        palette.setAttribute("style", 'position:absolute; display:none; width:145px; border:1px solid #000; font-family:verdana; font-size:10px; background-color:'+bgcolor+';');
    palette.setAttribute("id", name+"-palette");

    palette.appendChild(textdiv);
    palette.appendChild(closelink);

    document.getElementById(div).appendChild(input);
    document.getElementById(div).appendChild(palette);

    if (navigator.userAgent.indexOf("MSIE") > 1) {

        document.getElementById(name).style.background = "transparent url('"+img+"\') no-repeat right";
        document.getElementById(name).style.cursor = "pointer";

        document.getElementById(name+"-palette").style.position = "absolute";
        document.getElementById(name+"-palette").style.display = "none";
        document.getElementById(name+"-palette").style.width = "145px";
        document.getElementById(name+"-palette").style.border = "1px solid #000";
        document.getElementById(name+"-palette").style.fontFamily = "verdana";
        document.getElementById(name+"-palette").style.fontSize = "10px";
        document.getElementById(name+"-palette").style.backgroundColor = bgcolor;

        document.getElementById(name+"-textdiv").style.float = "left";
        document.getElementById(name+"-textdiv").style.width = "110px";
        document.getElementById(name+"-textdiv").style.backgroundColor = bgcolor;

        document.getElementById(name+"-closelink").style.float = "right";
        document.getElementById(name+"-closelink").style.textAlign = "right";
        document.getElementById(name+"-closelink").style.backgroundColor = bgcolor;

        if (value != "")
            document.getElementById(name).style.backgroundColor = value;
    }
    document.getElementById(name+'-palette').innerHTML += '<br /><table cellpadding="1" cellspacing="1" border="0">'+this.ColorGenerateMac()+'</table>';
}
function ColorOpenPalette(div) {
    document.getElementById(div).style.display="block";
}

function ColorPaletteClose(div) {
    document.getElementById(div).style.display="none";
}

function ColorPaletteChoose(div,color) {
    document.getElementById(div).value = "#"+color;
    document.getElementById(div).style.backgroundColor = "#"+color;
}

function ColorTextRefresh(div,color) {
        document.getElementById(div).innerHTML = '#'+color;
}

/* Lightbox v0.1 */


var packageArray = new Array();
var activePackage;

function getPageScroll() {
    var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	return yScroll;
}

function getWindowHeight() {
    var windowWidth, windowHeight;
	if (self.innerHeight) {
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) {
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) {
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}
    returnArray = new Array(windowWidth,windowHeight);
    return returnArray;
}

function showClosebox(type) {
    var closebtn = $('lightbox-closeimage');
    var next = $('lightbox-nextimage');
    var prev = $('lightbox-previmage');
    var actimg = $('lightbox-image');
    switch(type) {
        case "over":
            closebtn.style.display = 'block';

            if (activePackage > 0)
                prev.style.display = 'block';

            if (activePackage < (packageArray.length-1))
                next.style.display = 'block';
        break;
        default:
            closebtn.style.display = 'none';
            next.style.display = 'none';
            prev.style.display = 'none';
        break;
    }
}

function hideLightbox() {
    var overlay = $('lightbox-overlay');
    var lightbox = $('lightbox');
    overlay.style.display = 'none';
    lightbox.style.display = 'none';
}

function NextImage() {
    if (activePackage < (packageArray.length-1))
        displayLightbox(packageArray[(activePackage+1)][2]);
}

function PrevImage() {
    if (activePackage > 0)
        displayLightbox(packageArray[(activePackage-1)][2]);
}

function displayLightbox(objectlink) {
    var overlay = $('lightbox-overlay');
    overlay.style.display = 'block';

    packageArray = new Array();
    var packageNum = 0;
    if (objectlink.getAttribute("rel") == 'lightbox') {
        packageArray.push(new Array(objectlink.getAttribute('href'), objectlink.getAttribute('title'), anchor));
    }
    else {
        var anchors = document.getElementsByTagName('a');
        for (var i=0; i<anchors.length; i++){
		    var anchor = anchors[i];
			if (anchor.getAttribute('href') && (anchor.getAttribute('rel') == objectlink.getAttribute('rel'))){
			    packageArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title'), anchor));
			}
		}

		packageArray.removeDuplicates();
		while(packageArray[packageNum][0] != objectlink.getAttribute('href')) { packageNum++;}
    }

    activePackage = packageNum;


    var next = $('lightbox-nextimage');
    var prev = $('lightbox-previmage');
    next.style.display = 'none';
    prev.style.display = 'none';
    /*if (activePackage > 0)
        prev.style.display = 'block';

    if (activePackage < (packageArray.length-1))
        next.style.display = 'block'; */

    var lightbox = $('lightbox');
    var imagevalue = $('lightbox-image');
    var title = $('lightbox-title');
    if(objectlink.getAttribute('title'))
	    title.innerHTML = objectlink.getAttribute('title');
    else
	    title.innerHTML = '&nbsp;';

    if (packageArray.length > 1)
       title.innerHTML += '<br /><span style="font-weight:normal;">Image <b>'+(packageNum+1)+'</b> of <b>'+packageArray.length+'</b></span>';
    else {
        if (navigator.appVersion.indexOf("MSIE")!=-1)
            title.style.margin = '12px';
        else
            title.setAttribute('style','height:20px;float:left;margin-top:12px;font-weight:bold;');
    }

    var displayimg = new Image();
    var windowArray = getWindowHeight();
    var pageArray = getPageDetails();
    displayimg.onload= function() {
        imagevalue.src = objectlink.href;
        var lightboxtop = getPageScroll() + ((windowArray[1] - 35 - displayimg.height) / 2);
        var lightboxleft = ((pageArray[0] - 20 - displayimg.width) / 2);

        lightbox.style.top = (lightboxtop < 0) ? "0px" : lightboxtop + "px";
		lightbox.style.left = (lightboxleft < 0) ? "0px" : lightboxleft + "px";
        lightbox.style.width = (displayimg.width) + 'px';
        lightbox.style.display = 'block';

        listenKeyPress();
    }
    displayimg.src = objectlink.href;
}

function initLightbox() {
    if (!document.getElementsByTagName){ return; }
	var anchors = document.getElementsByTagName("a");

    var packageArray = new Array();

    for (var i=0; i<anchors.length; i++){
		var anchor = anchors[i];
        var relattribute = String(anchor.getAttribute('rel')).toLowerCase();
        if (anchor.getAttribute("href") && relattribute.match(/lightbox/)) {
            anchor.onclick = function () {displayLightbox(this); return false;}
            //packageArray.push(new Array(anchor.getAttribute('href'), anchor.getAttribute('title')));
        }
	}

    //packageArray.removeDuplicates();

    var objectbody = document.getElementsByTagName("body").item(0);
    var objectoverlay = document.createElement("div");
    objectoverlay.setAttribute('id','lightbox-overlay');
    //objectoverlay.onclick = function () {hideLightbox(); return false;}
    objectoverlay.style.display = 'none';
	objectoverlay.style.position = 'absolute';
    objectoverlay.style.backgroundColor = '#000000';

    objectoverlay.style.opacity = ".80";
	objectoverlay.style.MozOpacity = ".80";
	objectoverlay.style.KhtmlOpacity = ".80";
	objectoverlay.style.filter = "alpha(opacity=80)";

	objectoverlay.style.top = '0';
	objectoverlay.style.left = '0';
    objectoverlay.style.zIndex = '90';
    objectoverlay.style.width = '100%';
    if (navigator.appVersion.indexOf("MSIE")!=-1){
        var windowArray = getWindowHeight();
        objectoverlay.style.width = windowArray[0];
    }
    objectbody.insertBefore(objectoverlay, objectbody.firstChild);
    scrollLightbox();

    var objectlightbox = document.createElement("div");
    objectlightbox.setAttribute('id','lightbox');
    objectlightbox.setAttribute('style','padding:7px 7px 7px 7px; font-size:10px; font-family:Verdana;');
    if (navigator.appVersion.indexOf("MSIE")!=-1){
        objectlightbox.style.fontSize = '10px';
        objectlightbox.style.fontFamily = 'Verdana';
        objectlightbox.style.padding = '7px 7px 7px 7px';
	}
    objectlightbox.style.zIndex = '100';
    objectlightbox.style.backgroundColor = '#FFFFFF';
    objectlightbox.style.display = 'none';
    objectlightbox.style.position = 'absolute';
    objectbody.insertBefore(objectlightbox, objectoverlay.nextSibling);

    var objectlink = document.createElement("a");
	objectlink.setAttribute('href','#');
	objectlightbox.appendChild(objectlink);

    /* Close Button */

	 var imgPreloadCloseButton = new Image();
	imgPreloadCloseButton.onload= function() {

		var objectclosebtn = document.createElement("img");
		objectclosebtn.src = imgpath + "close.gif";
		objectclosebtn.setAttribute('id','lightbox-closeimage');
		objectclosebtn.style.position = 'absolute';
        objectclosebtn.style.top = '1';
        objectclosebtn.style.right = '1';
        objectclosebtn.style.border = 'none';
        objectclosebtn.style.display = 'none';
		objectclosebtn.style.zIndex = '200';
        objectclosebtn.onmouseover = function () {showClosebox('over'); return false;}
        objectclosebtn.onmouseout = function () {showClosebox('down'); return false;}
        objectclosebtn.onclick = function () {hideLightbox(); return false;}
		objectlink.appendChild(objectclosebtn);

		return false;
	}
	imgPreloadCloseButton.src = imgpath + "close.gif";

    /* Prev Button */

    var imgPreloadPrevButton = new Image();
	imgPreloadPrevButton.onload= function() {

		var objectprevbtn = document.createElement("img");
		objectprevbtn.src = imgpath + "prev.gif";
		objectprevbtn.setAttribute('id','lightbox-previmage');
		objectprevbtn.style.position = 'absolute';
        objectprevbtn.style.top = '40';
        objectprevbtn.style.left = '1';
        objectprevbtn.style.border = 'none';
        objectprevbtn.style.display = 'none';
		objectprevbtn.style.zIndex = '200';
        objectprevbtn.style.cursor = 'pointer';
        objectprevbtn.onclick = function () {PrevImage(); return false;}
        objectprevbtn.onmouseover = function () {showClosebox('over'); return false;}
        objectprevbtn.onmouseout = function () {showClosebox('down'); return false;}
		objectlink.appendChild(objectprevbtn);

		return false;
	}
    imgPreloadPrevButton.src = imgpath + "prev.gif";

    /* Next Button */

    var imgPreloadNextButton = new Image();
	imgPreloadNextButton.onload= function() {

		var objectnextbtn = document.createElement("img");
		objectnextbtn.src = imgpath + "next.gif";
		objectnextbtn.setAttribute('id','lightbox-nextimage');
		objectnextbtn.style.position = 'absolute';
        objectnextbtn.style.top = '40';
        objectnextbtn.style.right = '1';
        objectnextbtn.style.border = 'none';
        objectnextbtn.style.display = 'none';
		objectnextbtn.style.zIndex = '200';
        objectnextbtn.style.cursor = 'pointer';
        objectnextbtn.onclick = function () {NextImage(); return false;}
        objectnextbtn.onmouseover = function () {showClosebox('over'); return false;}
        objectnextbtn.onmouseout = function () {showClosebox('down'); return false;}
		objectlink.appendChild(objectnextbtn);

		return false;
	}
    imgPreloadNextButton.src = imgpath + "next.gif";


    /* Image in Lightbox */

    var objectimage = document.createElement("img");
	objectimage.setAttribute('id','lightbox-image');
    /*objectimage.onclick = function () {hideLightbox(); return false;}*/
    objectimage.onmouseover = function () {showClosebox('over'); return false;}
    objectimage.onmouseout = function () {showClosebox('down'); return false;}
    objectimage.style.zIndex = '110';
	objectlightbox.appendChild(objectimage);

    var objectdetails = document.createElement("div");
    objectdetails.setAttribute('style','height:20px;float:left;margin-top:6px;font-weight:bold;');
    objectdetails.setAttribute('id','lightbox-title');
    if (navigator.appVersion.indexOf("MSIE")!=-1){
        objectdetails.style.styleFloat = 'left';
        objectdetails.style.margin = '6px';
        objectlightbox.style.fontWeight = 'bold';
	}
    objectlightbox.appendChild(objectdetails);

    var objectclose = document.createElement("div");
    objectclose.setAttribute('style','height:20px;float:right;margin-top:12px;');
    objectclose.setAttribute('id','lightbox-closetext');
    if (navigator.appVersion.indexOf("MSIE")!=-1){
        objectclose.style.styleFloat = 'right';
        objectclose.style.margin = '12px';
	}
    objectclose.innerHTML = 'press <a href="#" onclick="hideLightbox(); return false;" style="text-decoration:none;"><span style="color: #555555; background-color: #dddddd; border-right: 1px solid #cccccc; border-bottom: 1px solid #cccccc; font-size: inherit; font-family: inherit; padding: 0 3px 2px 4px;">ESC</span></a> to close';
    objectlightbox.appendChild(objectclose);
    window.onscroll = scrollLightbox;
}

function getPageDetails() {
    var xScroll, yScroll;

    if (window.innerHeight && window.scrollMaxY) {
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight) {
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else {
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}

    windowArray = getWindowHeight();
    windowWidth = windowArray[0];
	windowHeight = windowArray[1];

	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else {
		pageHeight = yScroll;
	}

	if(xScroll < windowWidth){
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

    returnArray = new Array(pageWidth,pageHeight);
    return returnArray;
}

function scrollLightbox() {
    var xScroll, yScroll;

    if (window.innerHeight && window.scrollMaxY) {
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight) {
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else {
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}

    windowArray = getWindowHeight();
    windowWidth = windowArray[0];
	windowHeight = windowArray[1];

	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else {
		pageHeight = yScroll;
	}

	if(xScroll < windowWidth){
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

    $('lightbox-overlay').style.height = pageHeight + 'px';
}

function addLoadEvent(func)
{
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
    	window.onload = func;
	}
    else {
		window.onload = function() {
		    oldonload();
		    func();
		}
	}

}

function LightboxkeyPress(e) {
    var kC  = (window.event) ? event.keyCode : e.keyCode;
    var Esc = (window.event) ? 27 : e.DOM_VK_ESCAPE
    if(kC==Esc)
        hideLightbox();
    else if(kC=="39") {
        NextImage();
        showClosebox('over');
    }
    else if (kC=="37") {
        PrevImage();
        showClosebox('over');
    }
}

function listenKeyPress() {
    if (navigator.appVersion.indexOf("MSIE")!=-1)
        document.onkeydown = LightboxkeyPress;
    else
        document.onkeypress = LightboxkeyPress;
}

var Prototype = {
  Version: '0.5',
  Autor: 'Dominik Danninger',
  Email: 'Dominik Danninger <ddanninger@may.co.at>',
  LightboxVersion: '0.2',
  WidgetVersion: '0.2',
  DragNDrop: '0.1'
}
