/**
	Kleine String-Funktionalität
*/
String.prototype.trim = function() {
	return this.replace(/\s*((\S+\s*)*)/, "$1").replace(/((\s*\S+)*)\s*/, "$1");
};

/**
	Globals für JavaScript-Handles
*/
if(register == null) {
	var register = new Array();
}
var registerCount = 0;
//alert(registerCount);
var RegisterNrModels = 0;
var RegisterNrMotors = 0;

var path2xmlJSP;

var myActiveObject = null;
var DEBUG = false;

var CONST_IMGPATH="../img/common/scroll/";
var slider = new Image();
slider.src=CONST_IMGPATH+"slider.gif";

/**
	Selectboxen, zuerst die fuer fahrzeugmodelle
*/
var MSelectBrand  = function(name,
						width,
						imgPath,
						optionArr,
						returnAtChoose,
						defCap,
						defVal,
						currVal,
						zIndex,
						border,
						myForm) {
	//document.forms[0].announce(this);
	this.myForm=myForm!=null ? myForm : "forms[0]";
	this.options = optionArr;
	this.name = name;
	this.defCap = defCap==null||defCap.length==0?'Bitte wählen':defCap;
	this.defVal = defVal==null||defVal.length==0?'':defVal;
	this.border = border==null||border.length==0?'#666666':border;
	this.imgPath = imgPath==null?"../img/common/select.gif":imgPath;
	var str = '<div id="'+name+'Select" style="background-color:#FFFFFF;width:'+width+';position:relative;z-index:'+zIndex+'">';
	str += '<div class="head" id="'+name+'Head" style="width:'+width+'px; border:1px solid '+this.border+';margin:0px;padding:0px;">'+
			'<table style="width:100%" cellpadding="0" cellspacing="0"><tr><td>'+
			'<div class="input" id="'+name+'Choice" style="border:0px; width:'+(width-19)+'px" onclick="JavaScript:register['+registerCount+'].clap(true)">'+
			'&nbsp;'+this.defCap+'</div></td><td><a href="JavaScript:register['+registerCount+'].clap(true)"><img style="text-align:right" border="0" src="'+this.imgPath+'"></a></td></tr></table></div>';
	str += '<div id="'+name+'Clap" style="position:absolute;z-index:6000;top:20px;left:-3000px;overflow:auto;width:'+width+'px; border:1px solid '+this.border+';border-top:0px;visibility:hidden;z-index:12">';
	str+='<div id="'+name+'Carriage">';
	for (var i = 0; i < this.options.length; i++) {
		str += '<div class="a" style="background-color:#FFFFFF;" onmouseover="document.body.style.cursor=\'default\';this.style.background=\'#003399\';this.style.color=\'#FFFFFF\'" onmouseout="this.style.background=\'#FFFFFF\';this.style.color=\'#000000\'" onmousedown="JavaScript:register['+registerCount+'].takeChoice('+i+')">&nbsp;'+this.options[i][0]+'</div>';

	}
	str+='</div></div></div>';
	str+='<input type="hidden" name="'+name+'" value="'+this.defVal+'">';
	document.write(str);
	var myClap = document.getElementById(name+"Clap");
	if(i > 5) myClap.style.height=85+"px";
//alert(registerCount);
	register[registerCount++] = this;
	this.setCurrentVal(currVal);
}



MSelectBrand.prototype.notifyMouseUp = function(e) {
	//for(var i = 0; i < register.length; i++) {
	//		register[i].clap(false);
	//}
	this.clap(false);
	return true;
}


MSelectBrand.prototype.setCurrentVal = function (val) {
	for (var i = 0; i < this.options.length; i++) {
		if(this.options[i][1] == val) {
			this.takeChoice(i, true);
			return;
		}
	}
}
MSelectBrand.prototype.takeChoice = function(i, init) {
        if (init==undefined) {
          getModels(this.options[i][1],path2xmlJSP,RegisterNrModels);
        }
	eval('document.'+this.myForm+'.' + this.name).value=this.options[i][1];
	eval('document.getElementById("' + this.name+'Choice")').innerHTML = "&nbsp;" + this.options[i][0];
	this.clap(false, init);
}
MSelectBrand.prototype.reset = function(i) {
	eval('document.'+this.myForm+'.' + this.name).value=this.defVal;
	eval('document.getElementById("' + this.name+'Choice")').innerHTML = "&nbsp;" + this.defCap;
}
MSelectBrand.prototype.clap = function(arg, init) {
	if(this.returnAtChoose && init != true && !arg) {
		var el = eval('document.getElementById("' + this.name+'Clap")');
		el.style.left="-3000px";
		eval('document.getElementById("' + this.name+'Select")').style.zIndex="30";
		eval('document.'+this.myForm).submit();
		return;
	}
	var el = eval('document.getElementById("' + this.name+'Clap")');
	if(arg) {
		el.style.left="0px";
		el.style.visibility="visible";
		eval('document.getElementById("' + this.name+'Select")').style.zIndex="1111";
		myActiveObject = this;
	}
	else {
		el.style.left="-3000px";
		eval('document.getElementById("' + this.name+'Select")').style.zIndex="30";
	}
}



var MSelectModel  = function(name,
						width,
						imgPath,
						optionArr,
						returnAtChoose,
						defCap,
						defVal,
						currVal,
						zIndex,
						border,
						myForm) {
	//document.forms[0].announce(this);
	this.myForm=myForm!=null ? myForm : "forms[0]";
	this.options = optionArr;
	this.name = name;
	this.defCap = defCap==null||defCap.length==0?'Bitte wählen':defCap;
	this.defVal = defVal==null||defVal.length==0?'':defVal;
	this.border = border==null||border.length==0?'#666666':border;
	this.imgPath = imgPath==null?"../img/common/select.gif":imgPath;
	var str = '<div id="'+name+'Select" style="background-color:#FFFFFF;width:'+width+';position:relative;z-index:'+zIndex+'">';
	str += '<div class="head" id="'+name+'Head" style="width:'+width+'px; border:1px solid '+this.border+';margin:0px;padding:0px;">'+
			'<table style="width:100%" cellpadding="0" cellspacing="0"><tr><td>'+
			'<div class="input" id="'+name+'Choice" style="border:0px; width:'+(width-19)+'px" onclick="JavaScript:register['+registerCount+'].clap(true)">'+
			'&nbsp;'+this.defCap+'</div></td><td><a href="JavaScript:register['+registerCount+'].clap(true)"><img style="text-align:right" border="0" src="'+this.imgPath+'"></a></td></tr></table></div>';
	str += '<div id="'+name+'Clap" style="position:absolute;z-index:6000;top:20px;left:-3000px;overflow:auto;width:'+width+'px; border:1px solid '+this.border+';border-top:0px;visibility:hidden;z-index:12">';
	str+='<div id="'+name+'Carriage">';
	for (var i = 0; i < this.options.length; i++) {
		str += '<div class="a" style="background-color:#FFFFFF;" onmouseover="document.body.style.cursor=\'default\';this.style.background=\'#003399\';this.style.color=\'#FFFFFF\'" onmouseout="this.style.background=\'#FFFFFF\';this.style.color=\'#000000\'" onmousedown="JavaScript:register['+registerCount+'].takeChoice('+i+')">&nbsp;'+this.options[i][0]+'</div>';

	}
	str+='</div></div></div>';
	str+='<input type="hidden" name="'+name+'" value="'+this.defVal+'">';
	document.write(str);
	var myClap = document.getElementById(name+"Clap");
	if(i > 5) myClap.style.height=85+"px";
        RegisterNrModels = registerCount;
//alert(registerCount);
	register[registerCount++] = this;
        this.setCurrentVal(currVal);
}



MSelectModel.prototype.notifyMouseUp = function(e) {
	//for(var i = 0; i < register.length; i++) {
	//		register[i].clap(false);
	//}
	this.clap(false);
	return true;
}


MSelectModel.prototype.setCurrentVal = function (val) {
	for (var i = 0; i < this.options.length; i++) {
		if(this.options[i][1] == val) {
			this.takeChoice(i, true);
			return;
		}
	}
}
MSelectModel.prototype.takeChoice = function(i, init) {
	eval('document.'+this.myForm+'.' + this.name).value=this.options[i][1];
	eval('document.getElementById("' + this.name+'Choice")').innerHTML = "&nbsp;" + this.options[i][0];
	this.clap(false, init);
}
MSelectModel.prototype.reset = function(i) {
	eval('document.'+this.myForm+'.' + this.name).value=this.defVal;
	eval('document.getElementById("' + this.name+'Choice")').innerHTML = "&nbsp;" + this.defCap;
}
MSelectModel.prototype.clap = function(arg, init) {
	if(this.returnAtChoose && init != true && !arg) {
		var el = eval('document.getElementById("' + this.name+'Clap")');
		el.style.left="-3000px";
		eval('document.getElementById("' + this.name+'Select")').style.zIndex="30";
		eval('document.'+this.myForm).submit();
		return;
	}
	var el = eval('document.getElementById("' + this.name+'Clap")');
	if(arg) {
		el.style.left="0px";
		el.style.visibility="visible";
		eval('document.getElementById("' + this.name+'Select")').style.zIndex="1111";
		myActiveObject = this;
	}
	else {
		el.style.left="-3000px";
		eval('document.getElementById("' + this.name+'Select")').style.zIndex="30";
	}
}




var MSelect  = function(name,
						width,
						imgPath,
						optionArr,
						returnAtChoose,
						defCap,
						defVal,
						currVal,
						zIndex,
						myForm) {
	//document.forms[0].announce(this);
	this.myForm=myForm!=null ? myForm : "forms[0]";
	this.options = optionArr;
	this.returnAtChoose = returnAtChoose;
	this.name = name;
	this.clapScrollTop=0;
	this.defCap = defCap==null||defCap.length==0?'Bitte wählen':defCap;
	this.defVal = defVal==null||defVal.length==0?'':defVal;
	this.imgPath = imgPath==null?"../img/common/select.gif":imgPath;
	var str = '<div id="'+name+'Select" style="background-color:#FFFFFF;width:'+width+';position:relative;z-index:'+zIndex+'">';
	str += '<div class="head" id="'+name+'Head" style="width:'+width+'px; border:1px solid #003399;margin:0px;padding:0px;">'+
			'<table style="width:100%" cellpadding="0" cellspacing="0"><tr><td>'+
			'<div class="input" id="'+name+'Choice" style="border:0px; width:'+(width-19)+'px" onclick="JavaScript:register['+registerCount+'].clap(true)">'+
			'&nbsp;'+this.defCap+'</div></td><td><a href="JavaScript:register['+registerCount+'].clap(true)"><img style="text-align:right" border="0" src="'+this.imgPath+'"></a></td></tr></table></div>';
	str += '<div id="'+name+'Clap" style="position:absolute;z-index:999;background-color:#FFF;top:20px;left:-3000px;overflow:auto;width:'+width+'px; border:1px solid #003399;border-top:0px;visibility:hidden">';
	str+='<div id="'+name+'Carriage">';
	for (var i = 0; i < this.options.length; i++) {
		str += '<div class="a" style="background-color:#FFFFFF;" onmouseover="document.body.style.cursor=\'default\';this.style.background=\'#003399\';this.style.color=\'#FFFFFF\'" onmouseout="this.style.background=\'#FFFFFF\';this.style.color=\'#000000\'" onmousedown="JavaScript:register['+registerCount+'].takeChoice('+i+')">&nbsp;'+this.options[i][0]+'</div>';

	}
	str+='</div></div></div>';
	str+='<input type="hidden" name="'+name+'" value="'+this.defVal+'">';
	document.write(str);
	var myClap = document.getElementById(name+"Clap");
	if(i > 5) myClap.style.height=85+"px";
	register[registerCount++] = this;
	/*
	document.onmouseup = function() {
		for(var i = 0; i < register.length; i++) {
			register[i].clap(false);
		}
	}
	*/
	this.setCurrentVal(currVal);
}


MSelect.prototype.notifyMouseUp = function(e) {
	if(this.clapScrollTop!=document.getElementById(this.name+"Clap").scrollTop) {

		this.clapScrollTop=document.getElementById(this.name+"Clap").scrollTop;

		return false;
	}

	this.clap(false);
	return true;
}

MSelect.prototype.notifyMouseDown = function(e) {
	//for(var i = 0; i < register.length; i++) {
	//		register[i].clap(false);
	//}
	this.clapScrollTop=document.getElementById(this.name+"Clap").scrollTop;
}
MSelect.prototype.setCurrentVal = function (val) {
	for (var i = 0; i < this.options.length; i++) {
		if(this.options[i][1] == val) {
			this.takeChoice(i, true);
			return;
		}
	}
}
MSelect.prototype.takeChoice = function(i, init) {
	eval('document.'+this.myForm+'.' + this.name).value=this.options[i][1];
	eval('document.getElementById("' + this.name+'Choice")').innerHTML = "&nbsp;" + this.options[i][0];
	this.clap(false, init);
}
MSelect.prototype.reset = function(i) {
	eval('document.'+this.myForm+'.' + this.name).value=this.defVal;
	eval('document.getElementById("' + this.name+'Choice")').innerHTML = "&nbsp;" + this.defCap;
}
MSelect.prototype.clap = function(arg, init) {
	if(this.returnAtChoose && init != true && !arg) {
		var el = eval('document.getElementById("' + this.name+'Clap")');
		el.style.left="-3000px";
		eval('document.getElementById("' + this.name+'Select")').style.zIndex="300";
		eval('document.'+this.myForm).submit();
		return;
	}
	var el = eval('document.getElementById("' + this.name+'Clap")');
	if(arg) {
		el.style.left="0px";
		el.style.visibility="visible";
		eval('document.getElementById("' + this.name+'Select")').style.zIndex="1222";
		myActiveObject = this;
	}
	else {
		el.style.left="-3000px";
		eval('document.getElementById("' + this.name+'Select")').style.zIndex="30";
	}

}
		//var register = new Array();
		//var registerCount = 0;





var MSelectBorder  = function(name,
						width,
						imgPath,
						optionArr,
						returnAtChoose,
						defCap,
						defVal,
						currVal,
						zIndex,
						border,
						myForm) {
	//document.forms[0].announce(this);
	this.myForm=myForm!=null ? myForm : "forms[0]";
	this.options = optionArr;
	this.name = name;
	this.defCap = defCap==null||defCap.length==0?'Bitte wählen':defCap;
	this.defVal = defVal==null||defVal.length==0?'':defVal;
	this.border = border==null||border.length==0?'#666666':border;
	this.imgPath = imgPath==null?"../img/common/select.gif":imgPath;
	var str = '<div id="'+name+'Select" style="background-color:#FFFFFF;width:'+width+';position:relative;z-index:'+zIndex+'">';
	str += '<div class="head" id="'+name+'Head" style="width:'+width+'px; border:1px solid '+this.border+';margin:0px;padding:0px;">'+
			'<table style="width:100%" cellpadding="0" cellspacing="0"><tr><td>'+
			'<div class="input" id="'+name+'Choice" style="border:0px; width:'+(width-19)+'px" onclick="JavaScript:register['+registerCount+'].clap(true)">'+
			'&nbsp;'+this.defCap+'</div></td><td><a href="JavaScript:register['+registerCount+'].clap(true)"><img style="text-align:right" border="0" src="'+this.imgPath+'"></a></td></tr></table></div>';
	str += '<div id="'+name+'Clap" style="position:absolute;z-index:6000;top:20px;left:-3000px;overflow:auto;width:'+width+'px; border:1px solid '+this.border+';border-top:0px;visibility:hidden;z-index:12">';
	str+='<div id="'+name+'Carriage">';
	for (var i = 0; i < this.options.length; i++) {
		str += '<div class="a" style="background-color:#FFFFFF;" onmouseover="document.body.style.cursor=\'default\';this.style.background=\'#003399\';this.style.color=\'#FFFFFF\'" onmouseout="this.style.background=\'#FFFFFF\';this.style.color=\'#000000\'" onmousedown="JavaScript:register['+registerCount+'].takeChoice('+i+')">&nbsp;'+this.options[i][0]+'</div>';

	}
	str+='</div></div></div>';
	str+='<input type="hidden" name="'+name+'" value="'+this.defVal+'">';
	document.write(str);
	var myClap = document.getElementById(name+"Clap");
	if(i > 5) myClap.style.height=85+"px";
 //alert(registerCount);
	register[registerCount++] = this;
	this.setCurrentVal(currVal);
}



MSelectBorder.prototype.notifyMouseUp = function(e) {
	//for(var i = 0; i < register.length; i++) {
	//		register[i].clap(false);
	//}
	this.clap(false);
	return true;
}


MSelectBorder.prototype.setCurrentVal = function (val) {
	for (var i = 0; i < this.options.length; i++) {
		if(this.options[i][1] == val) {
			this.takeChoice(i, true);
			return;
		}
	}
}
MSelectBorder.prototype.takeChoice = function(i, init) {
	eval('document.'+this.myForm+'.' + this.name).value=this.options[i][1];
	eval('document.getElementById("' + this.name+'Choice")').innerHTML = "&nbsp;" + this.options[i][0];
	this.clap(false, init);
}
MSelectBorder.prototype.reset = function(i) {
	eval('document.'+this.myForm+'.' + this.name).value=this.defVal;
	eval('document.getElementById("' + this.name+'Choice")').innerHTML = "&nbsp;" + this.defCap;
}
MSelectBorder.prototype.clap = function(arg, init) {
	if(this.returnAtChoose && init != true && !arg) {
		var el = eval('document.getElementById("' + this.name+'Clap")');
		el.style.left="-3000px";
		eval('document.getElementById("' + this.name+'Select")').style.zIndex="30";
		eval('document.'+this.myForm).submit();
		return;
	}
	var el = eval('document.getElementById("' + this.name+'Clap")');
	if(arg) {
		el.style.left="0px";
		el.style.visibility="visible";
		eval('document.getElementById("' + this.name+'Select")').style.zIndex="1111";
		myActiveObject = this;
	}
	else {
		el.style.left="-3000px";
		eval('document.getElementById("' + this.name+'Select")').style.zIndex="30";
	}
}



document.write("<div id=\"hiddenslider\" style=\"position:absolute;visibility:hidden\"></div>");
document.write("<div id=\"hiddencarriage\" style=\"position:absolute;visibility:hidden\"></div>");

/**
	ScrollPanes
*/
var MScrollPane = function (name, width, height, padding, html, border) {
	this.name = name;
	this.CONST_CARRIAGEPADDING = 0;
	this.CONST_ARROWHEIGHT = 4;
	this.CONST_SPACETOARROW = 6;
	this.CONST_SCROLLERWIDTH=12;

	this.boxPadding = padding;
	this.boxHeight = height;
	this.boxWidth = width;

	this.innerHeight = this.boxHeight-this.boxPadding;
	this.innerWidth = this.boxWidth;
	this.contentWidth = this.innerWidth-this.CONST_SCROLLERWIDTH;
	this.contentHeight = this.boxHeight - this.boxPadding;
	this.scrollerLeft = this.contentWidth + Math.ceil(this.boxPadding * 4 / 3);

	if(border==null) border="#003399";
	var str="";
	str+=('<div class="'+name+'" id="'+registerCount+'msp_frame" style="position:relative;border:1px solid '+border+';">');
	str+=('<div id="'+registerCount+'msp_inner">');
	str+=('<div id="'+registerCount+'msp_content" style="position:absolute;height:100%;overflow:hidden;">');
	str+=('<div id="'+registerCount+'msp_carriage" style="position:absolute;z-index:1111;font-family:arial,helvetica,sans;font-size:12px">'+html+'</div>');
	str+=('</div>');
	str+=('<div id="'+registerCount+'msp_scroller" style="position:absolute;height:100%">');
	str+=('<div id="'+registerCount+'msp_bar" style="position:absolute;z-index:1110;left:3px;">');
	str+=('<table cellpadding="0" cellspacing="0" border="0">');
	str+=('<tr><td><img onmousedown="JavaScript:register['+registerCount+'].scroll(1);" src="'+CONST_IMGPATH+'arrowUp.gif" width="7" height="'+this.CONST_ARROWHEIGHT+'"></td></tr>');
	str+=('<tr><td><img src="'+CONST_IMGPATH+'pixTrans.gif" height="6"></td></tr>');
	str+=('<tr><td><table cellpadding="0" cellspacing="0" border="0"><tr>');
	str+=('<td><img src="./img/common/scroll/pixTrans.gif" height="1" width="3" border="0"></td><td width="1" align="left" bgcolor="#DDDDDD">');
	str+=('<img align="center"  id="'+registerCount+'msp_bluebar" src="'+CONST_IMGPATH+'pixBlue.gif" width="1" height="1"></td><td width="3">');
	str+=('<img src="./img/common/scroll/pixTrans.gif" height="1" width="100%" border="0"></td>');
	str+=('</tr></table></td></tr>');
	str+=('<tr><td><img src="'+CONST_IMGPATH+'pixTrans.gif" height="6"></td></tr>');
	str+=('<tr><td><img onmousedown="JavaScript:register['+registerCount+'].scroll(-1);" src="'+CONST_IMGPATH+'arrowDown.gif" height="'+this.CONST_ARROWHEIGHT+'"></td></tr>');
	str+=('</table>');
	str+=('</div>');
	str+=('<div id="'+registerCount+'msp_slider" style="position:absolute;z-index:1111;left:2px;top:34px;width:9px;height:24px;background-repeat:no-repeat;background-image:url('+CONST_IMGPATH+'slider.gif);cursor:pointer;" onmousedown="JavaScript:register['+registerCount+'].pickSlider(event);"></div>');
	str+=('</div>');
	str+=('</div>');
	str+=('</div>');
	document.write(str);
	////alert(str);

	/*
	document.write('<div class="'+name+'" id="'+registerCount+'msp_frame" style="position:relative;border:1px solid #003399;">');
	document.write('<div id="'+registerCount+'msp_inner">');
	document.write('<div id="'+registerCount+'msp_content" style="position:absolute;height:100%;overflow:hidden;">');
	document.write('<div id="'+registerCount+'msp_carriage" style="position:absolute;z-index:1111;font-family:arial,helvetica,sans;font-size:12px">'+html+'</div>');
	document.write('</div>');
	document.write('<div id="'+registerCount+'msp_scroller" style="position:absolute;height:100%">');
	document.write('<div id="'+registerCount+'msp_bar" style="position:absolute;z-index:1110;left:3px;">');
	document.write('<table cellpadding="0" cellspacing="0" border="0">');
	document.write('<tr><td><img onmousedown="JavaScript:register['+registerCount+'].scroll(1);" src="'+CONST_IMGPATH+'arrowUp.gif" width="7" height="'+this.CONST_ARROWHEIGHT+'"></td></tr>');
	document.write('<tr><td><img src="'+CONST_IMGPATH+'pixTrans.gif" height="6"></td></tr>');
	document.write('<tr><td><table cellpadding="0" cellspacing="0" border="0"><tr>');
	document.write('<td><img src="./img/common/scroll/pixTrans.gif" height="1" width="3" border="0"></td><td width="1" align="left" bgcolor="#DDDDDD">');
	document.write('<img align="center"  id="'+registerCount+'msp_bluebar" src="'+CONST_IMGPATH+'pixBlue.gif" width="1" height="1"></td><td width="3">');
	document.write('<img src="./img/common/scroll/pixTrans.gif" height="1" width="100%" border="0"></td>');
	document.write('</tr></table></td></tr>');
	document.write('<tr><td><img src="'+CONST_IMGPATH+'pixTrans.gif" height="6"></td></tr>');
	document.write('<tr><td><img onmousedown="JavaScript:register['+registerCount+'].scroll(-1);" src="'+CONST_IMGPATH+'arrowDown.gif" height="'+this.CONST_ARROWHEIGHT+'"></td></tr>');
	document.write('</table>');
	document.write('</div>');
	document.write('<div id="'+registerCount+'msp_slider" style="position:absolute;z-index:1111;left:2px;top:34px;width:9px;height:24px;background-repeat:no-repeat;background-image:url('+CONST_IMGPATH+'slider.gif);cursor:pointer;" onmousedown="JavaScript:register['+registerCount+'].pickSlider(event);"></div>');
	document.write('</div>');
	document.write('</div>');
	document.write('</div>');
	*/

	this.carriage = document.getElementById(registerCount+"msp_carriage");
	//this.carriage.innerHTML = html;
	this.slider = document.getElementById(registerCount+"msp_slider");

	this.txt=html;
	this.sliderTop,this.sliderMax;
	this.carriageTop,this.carriageMax;
	this.carriageHeight, this.sliderHeight;
	this.currCarriagePos=0, this.currSliderPos=0;
	this.oneLineHeight = 10; // oder etwa nicht?
	this.q=1;
	this.isElementPicked = false;
	this.initDrag = 0;
	this.initSliderPos = 0;
	this.mayScroll = true;
	register[registerCount++] = this;
	//alert("SCROLLPANE: " + registerCount);
	this.init(true);

}
MScrollPane.prototype.setHTML = function (html) {
	this.txt=html;
	this.currCarriagePos=0, this.currSliderPos=0;
	this.oneLineHeight = 10; // oder etwa nicht?
	this.q=1;
	this.isElementPicked = false;
	this.initDrag = 0;
	this.initSliderPos = 0;
	this.slider.style.top=0;
	this.carriage.style.top=0;
	//this.initSliderPos=sPos;
	//this.mayScroll = true;
	this.init(false);
}

MScrollPane.prototype.getCarriageHeight = function (firstInit) {
	var element = document.createElement("div");
	element.style.width=this.contentWidth;
	element.innerHTML = this.txt;
	var fchild = getElementById("hiddencarriage").firstChild;
	if(fchild != null) getElementById("hiddencarriage").removeChild(fchild);
	getElementById("hiddencarriage").appendChild(element);
	//return getElementById("hiddencarriage").offsetHeight;
	return element.offsetHeight;
}

MScrollPane.prototype.getSliderHeight = function () {
	var element = document.createElement("div");
	element.innerHTML = '<img src="'+CONST_IMGPATH+'slider.gif">';
	getElementById("hiddenslider").appendChild(element);
	return element.offsetHeight;
}

MScrollPane.prototype.getBluebarHeight = function () {
	return this.innerHeight;
}
/*
MScrollPane.prototype._getHeight = function (id) {
	return document.getElementById(id).offsetHeight;
}
*/
MScrollPane.prototype.getWidth = function (id) {
	return document.getElementById(id).offsetWidth;
}

MScrollPane.prototype.scrollTo = function (line) {
	//alert("scrolling to " + line);
	this.scroll(line*-1+1);
}
MScrollPane.prototype.init=function(firstInit) {
	if(firstInit) {
		var frame = document.getElementById((registerCount-1)+"msp_frame");
		var inner = document.getElementById((registerCount-1)+"msp_inner");
		var blueBar = document.getElementById((registerCount-1)+"msp_bluebar");
		var content = document.getElementById((registerCount-1)+"msp_content");
		var scroller = document.getElementById((registerCount-1)+"msp_scroller");
		this.scroller = scroller;
		this.content = content;
		this.blueBar = blueBar;
		this.inner = inner;
		this.frame = frame;
	}

	this.carriage.innerHTML = this.txt;
	this.carriage.style.padding=this.CONST_CARRIAGEPADDING;
	this.frame.style.height=this.boxHeight;
	this.frame.style.width=this.boxWidth;
	this.frame.style.padding=this.boxPadding;
	this.inner.style.height=this.innerHeight;
	this.inner.style.width=this.innerWidth;
	this.blueBar.style.height=this.innerHeight-2*(this.CONST_ARROWHEIGHT+this.CONST_SPACETOARROW);
	this.content.style.width=this.contentWidth;
	this.content.style.height=this.contentHeight;
	this.scroller.style.left=this.scrollerLeft;

	this.sliderHeight = this.getSliderHeight();
	//this.sliderWidth = this.getHeight(registerCount+"msp_slider");
	this.sliderTop = this.CONST_ARROWHEIGHT + 2;
	this.sliderMax =this.innerHeight- this.CONST_ARROWHEIGHT*2 /*+ this.CONST_SPACETOARROW */+2- this.sliderHeight;
	//this.sliderMax = this.getHeight(registerCount+"msp_bar") - this.CONST_ARROWHEIGHT + this.CONST_SPACETOARROW - this.sliderHeight;
	this.slider.style.top=this.sliderTop;
	//this.carriageHeight=this.getHeight(registerCount+"msp_carriage");
	this.carriageHeight=this.getCarriageHeight();
	this.carriageTop=0;
	this.carriageMax=-this.carriageHeight+this.innerHeight;
	this.sliderHeight=this.sliderMax-this.sliderTop;
	this.q=(this.carriageHeight-this.innerHeight)/this.sliderHeight;
	var allLines = this.carriageHeight - this.CONST_CARRIAGEPADDING*2;
	for (var i = 14; i < 24; i++) { // weder kleiner noch größer
		if(allLines % i == 0) {
			this.oneLineHeight = i;
			break;
		}
	}
	if(this.innerHeight  > this.carriageHeight) {

		this.slider.style.visibility="hidden";
		this.mayScroll = false;
	}
	else {
		this.slider.style.visibility="visible";
		this.mayScroll = true;
	}
	if(DEBUG) this.debug();
	//register[registerCount] = this;
	//alert("FUNCTION: " + registerCount);
	//if(firstInit)
		//registerCount++;

}

MScrollPane.prototype.pickSlider=function(e) {
	var ev = document.all ? event : e;
	this.initDrag = (document.layers) ? e.pageY : document.body.scrollTop+ev.clientY;
	this.isElementPicked = true;
	myActiveObject = this;

}

MScrollPane.prototype.scroll=function(step) {
	if(!this.mayScroll) return;
	var cPos=this.currCarriagePos + step*this.oneLineHeight;
	var sPos=Math.round(cPos / -this.q)+this.sliderTop;
	if(sPos > this.sliderMax) sPos = this.sliderMax;
	else if(sPos <this.sliderTop) sPos = this.sliderTop;
	if(cPos > this.carriageTop) cPos = this.carriageTop;
	else if(cPos <this.carriageMax) cPos = this.carriageMax;
	this.slider.style.top=sPos;
	this.initSliderPos=sPos;
	this.carriage.style.top=cPos;
	this.currCarriagePos=cPos;
}

MScrollPane.prototype.dragScroll=function(diff) {
	if(!this.mayScroll) return;
	var pos = this.initSliderPos+diff;
	var sliderPos = pos;
	var carriagePos = Math.round(pos*-this.q);
	if(pos > this.sliderMax) sliderPos = this.sliderMax;
	else if(pos < this.sliderTop) sliderPos = this.sliderTop;
	if(carriagePos > this.carriageTop) carriagePos = this.carriageTop;
	else if(carriagePos < this.carriageMax) carriagePos = this.carriageMax;
	this.slider.style.top=sliderPos;
	this.carriage.style.top=carriagePos;
	this.currSliderPos=sliderPos;
	this.currCarriagePos=carriagePos;
}

MScrollPane.prototype.notifyMouseMove = function(e) {
	if(this.isElementPicked) {
		var ev = document.all ? event : e;
		var mY = (document.layers) ? e.pageY : document.body.scrollTop+ev.clientY;
		var diff = mY - this.initDrag;
		this.dragScroll(diff);
	}
}

MScrollPane.prototype.notifyMouseUp = function(e) {
	if(this.isElementPicked) {
		var ev = document.all ? event : e;
		var mY = (document.layers) ? e.pageY : document.body.scrollTop+ev.clientY;
		var diff = mY - this.initDrag;
		var pos = this.initSliderPos+diff;
		if(pos > this.sliderMax) pos = this.sliderMax;
		else if(pos < this.sliderTop) pos = this.sliderTop;
		this.slider.style.top=pos;
		this.initSliderPos=pos;
		this.isElementPicked = false;
		return true;
	}
}

MScrollPane.prototype.debug = function() {
	var d = "REGISTERNO: " + registerCount + "\n";
	d += "carriageHeight: " + this.carriageHeight + "\n";
	d += "improved carriageHeight: " + this.getCarriageHeight() + "\n";
	d += "carriageWidth: " + this.carriage.offsetWidth + "\n";
	d += "carriageTop: " + this.carriageTop + "\n";
	d += "carriageMax: " + this.carriageMax + "\n";
	d += "sliderHeight: " + this.sliderHeight + "\n";
	d += "sliderTop: " + this.sliderTop + "\n";
	d += "sliderMax: " + this.sliderMax + "\n";
	d += "frameWidth: " + document.getElementById(registerCount+"msp_frame").offsetWidth + "\n";
	d += "txt: " + this.carriage.innerHTML;
	//alert(d);
}
document.onmousemove = function(e) {
	if(myActiveObject != null) {
		if(myActiveObject.notifyMouseMove)
			myActiveObject.notifyMouseMove(e);
	}
}

document.onmouseup = function(e) {
	if(myActiveObject != null) {
		if(myActiveObject.notifyMouseUp) {
			if(myActiveObject.notifyMouseUp(e))
			myActiveObject = null;
		}
	}
}
document.onmousedown = function(e) {
	if(myActiveObject != null) {
		if(myActiveObject.notifyMouseDown) {
			myActiveObject.notifyMouseDown(e);
			//myActiveObject = null;
		}
	}
}

function openWindow(url, name, width, height) {
	var win = window.open(url, name, "width="+width+",height="+height+",location=no,location=0");
	win.focus();
}



