
//***************************************
//functions for index_models.shtml
//*************************************


//constructor for image objects of model module
function createModelHilite(whichBGImg,whichImg,lowsrc){
	//erzeugen der mouseover-Images
	if(!whichImg.counter){
		whichImg.counter = 1;
		whichImg.hilitetoggle = 1;
		whichImg.bgimg = "url(" + whichBGImg + ")";		
		whichImg.offimg = new Image();
		whichImg.offimg.src = lowsrc;
		//creating  hilite images 
		if(arguments.length > 3){
			whichImg.addImages = new Array();
			for(i=0;i<arguments.length-3;i++){
				whichImg.addImages[i] = new Image();
				whichImg.addImages[i].src = arguments[i+3];
			}
		}	
		}
	}


//mouseover function for model image
function showModelHilite(whichDiv,whichImgObj,whichDataDiv){
	try {
		if(whichImgObj.hilitetoggle == 1) whichImgObj.src = whichImgObj.addImages[0].src;
		if(whichDataDiv.className == "cl_data_multiple"){
			whichDataDiv.className = "cl_data_visible";
		}
		else{
			whichDataDiv.className = "cl_data_fixed_visible";
		}
		//check out for td as correct parentNode	
		var td_as_parent = whichDiv.parentNode;
		while (td_as_parent) {
  			if(td_as_parent.className == "onecol" || td_as_parent.className == "onecol_to_line"){
			var correctParent = td_as_parent;
			break;
			}
			else{
  			td_as_parent = td_as_parent.parentNode;
			}
		}		
		correctParent.style.background = "url(" + td_bgimage + ")";
		whichDiv.style.background = "#F0F0F5";	
		changeModelsClass(whichDataDiv);
	}
	catch (ex) {
		// ignore
	}
}

//mouseout function for model image
function resetModelHilite(whichDiv,whichImgObj,whichDataDiv){
	try {
		whichImgObj.src = whichImgObj.offimg.src;
		if(whichDataDiv.className == "cl_data_visible"){
			whichDataDiv.className = "cl_data_multiple";
		}
		else{
			whichDataDiv.className = "cl_data";
		}	
		var td_as_parent = whichDiv.parentNode;
		while (td_as_parent) {
  			if(td_as_parent.className == "onecol" || td_as_parent.className == "onecol_to_line"){
			var correctParent = td_as_parent;
			break;
			}
			else{
  			td_as_parent = td_as_parent.parentNode;
			}
		}		
		correctParent.style.background = "url()";
		whichDiv.style.background = "#ffffff";
		changeModelsClass(whichDataDiv);
	}
	catch (ex) {
		// ignore
	}
}

//mouseover function for price display
function showPrice(whichDataDiv){
	try {
		whichDataDiv.className = "cl_price";
		whichDataDiv.parentNode.style.backgroundImage = whichDataDiv.parentNode.parentNode.parentNode.childNodes[0].bgimg;
		myNum = checkmyNodeNum(whichDataDiv);
		changeModelImage(whichDataDiv,myNum);
	}
	catch (e) {
	  // ignore errors
	}
}

//check div num
function checkmyNodeNum(which){
 i = which.parentNode.parentNode.childNodes.length;
 for(x=0;x<i;x++){
  if(which.parentNode.parentNode.childNodes[x].childNodes[1].className == "cl_price"){
  return(x+1);
  }
 }
}

//change model image (if more than one model)
function changeModelImage(whichDiv, whichNum){
	whichDiv.parentNode.parentNode.parentNode.childNodes[0].hilitetoggle = 0;
	whichDiv.parentNode.parentNode.parentNode.childNodes[0].src = 
whichDiv.parentNode.parentNode.parentNode.childNodes[0].addImages[whichNum].src;

}

//mouseout function for price display
function resetPrice(whichDataDiv){
	whichDataDiv.parentNode.parentNode.parentNode.childNodes[0].hilitetoggle = 1;
	whichDataDiv.className = "cl_price_hidden";
	whichDataDiv.parentNode.style.background = "url()";
}

//check model divs
function changeModelsClass(which){
 i = which.childNodes.length;
 for(x=0;x<i;x++){
 	var a = which.childNodes[x].childNodes.length;
	for(b=0;b<a;b++){
  		if(which.childNodes[x].childNodes[b].className == "cl_model"){
  			which.childNodes[x].childNodes[b].className = "cl_model_vis";
  		}
		else if(which.childNodes[x].childNodes[b].className == "cl_model_vis"){
  			which.childNodes[x].childNodes[b].className = "cl_model";
  		}		
 	}
	}	
}

//===============================================================
//Scripts for configurator module
//===============================================================

function configurator_execute() {
    var cfg = document.frmConfigurator.cboConfigurator;
    var link = cfg.options[cfg.selectedIndex].value;
    if (link==null || link.length==0) {return;}

    var regexp_url = new RegExp("href=\\\"[\\w*0-9_/:\\.\\-]+\\\"");
    var regexp_js = new RegExp("href=\\\"javascript:[\\w*0-9_/\\.\\-\\(\\)\\=,';]+\\\"");
    var regexp_onclick = new RegExp("onclick=\\\"[\\w*0-9_/:\\.\\-\\(\\)\\=,';]+\\\"");
    
    var href_url = regexp_url.exec(link);
    var href_js = regexp_js.exec(link);
    var onclick = regexp_onclick.exec(link);
    var blank_target = link.match(/target=\"_blank\"/i);

    if(href_url) {
    	var url = href_url[0];
	    var i = url.indexOf('"');
	    url = url.substring(i+1,url.length-1);
	    if(!blank_target) {
		    document.location=url;
	    } else {
		    window.setTimeout("window.open('" + url + "','_blank','')",1);
	    }
    }

    if(href_js) {
    	var js_command = href_js[0];
	    var i = js_command.indexOf('"');
	    js_command = js_command.substring(i+1,js_command.length-1);
	    window.setTimeout(js_command,1);
    }

    if(onclick) {
	    var js_command = onclick[0];
	    var i = js_command.indexOf('"');
	    js_command = js_command.substring(i+1,js_command.length-1);
	    window.setTimeout(js_command,1);
    }
}
 
//================================================================
//Scripts for Newslist Scroller
//===============================================================

//creating Newslist
function createNewslist(whichID,whichMenu){
	scrollTimer = 0;
	this.id = whichID;
	//props for positionierung of menu
	this.imgPosChecked = 0;
	this.menuPos = 0;
	this.menuTop = 0;
	this.imgHeight = 0;
	this.menuWidth = 0;
	//reading arrays
	this.activeMenu = eval(whichMenu);
	this.subMenuItemsList = '';
	if(this.activeMenu != 0) {
		for(var i = 0; i < this.activeMenu.length-2; i++) {
			this.subMenuItemsList += '<div class="news_entry">'
			  + '<img src="' + newslistbutton + '" width="10" height="8" alt="" class="arrow_news">'
			  + (this.activeMenu[i+2]!=null ? this.activeMenu[i+2] : "")
			  + '<span class="date_news">' + this.activeMenu[i] + ':</span>'
			  + ' ' + this.activeMenu[i+1]
			  + (this.activeMenu[i+2]!=null ? this.activeMenu[i+2] : "</a>")
			  + '</div>';
			i = i + 2;
		}	
	}	
}


//writing newsscroller start html
function initNewsScroller(whichMenu){
if(whichMenu.activeMenu != 0) {
		document.getElementById("nscr_news").innerHTML = whichMenu.subMenuItemsList;
		document.getElementById("nscr_maindiv").style.visibility = "visible";
		document.getElementById("nscr_maindiv").style.display = "block";				
		document.getElementById("nscr_news").style.top= 0 + "px";		
	}		
}

function scroll_up(){
	var divTop = document.getElementById("nscr_news").offsetTop;
	var maxTop = document.getElementById("nscr_news").offsetHeight;
	maxTop = maxTop - 98;
	//alert(maxTop);
	divTop = divTop - 1;
	if(divTop + maxTop <= 0 ) divTop= -maxTop;
	document.getElementById("nscr_news").style.top = divTop + "px";
	//if(navigator.appVersion.indexOf("MSIE 5") != -1 && isMac) document.getElementById("nscr_news").style.left = 20 + "px";
	scrollTimer = setTimeout("scroll_up()",10);

}

function scroll_down(){
	var divTop = document.getElementById("nscr_news").offsetTop;
	var maxTop = document.getElementById("nscr_news").offsetHeight;
	divTop = divTop + 1;
	if(divTop >= 0) divTop = 0;
	document.getElementById("nscr_news").style.top = divTop + "px";
	//if(navigator.appVersion.indexOf("MSIE 5") != -1 && isMac) document.getElementById("nscr_news").style.left = 20 + "px";
	scrollTimer = setTimeout("scroll_down()",10);

}

function scroll_stop(){
	if (scrollTimer) clearTimeout(scrollTimer);
}


//=========================================
// Calendar-functions
//=========================================

// active month in calendar control
var activeMonth = 0;

function makeCalendar(){
	//reading arrays
	this.months = new Array;
	for(var i = 0; i < arguments.length; i++){
		this.months[i] = arguments[i];
		this.months[i].name = this.months[i][0][0];
		this.months[i].daysum = this.months[i][0][1];
		this.months[i].start = this.months[i][0][2];
		var startCount = this.months[i].start * 23;
		/*var startCount = 0;
		switch (this.months[i].start) {
			case 'mo':
			startCount = 0;
			break;
			case 'di':
			startCount = 1*23;
			break;
			case 'mi':
			startCount = 2*23;
			break;
			case 'do':
			startCount = 3*23;
			break;
			case 'fr':
			startCount = 4*23;
			break;
			case 'sa':
			startCount = 5*23;
			break;
			case 'so':
			startCount = 6*23;
			break;
			}	*/
		this.months[i].completeDayList = new Array;
		for(var x = 1; x < this.months[i].length; x++){
			var day = this.months[i][x][0];
			var href = this.months[i][x][1];
			var title = this.months[i][x][2];
			var description = this.months[i][x][3];
			var completeDescription = '';
			completeDescription += '<span class="eventTitle">' + title + '</span><span class="eventDesc">' + description + '</span>';
			//if there are more than one event per day...
			if(this.months[i].completeDayList[day]){
				var addDescription = '<span class="eventDesc">' + description + '</span>';
				var addCompleteDescription = this.months[i].completeDayList[day][2];
				addCompleteDescription += addDescription;
				this.months[i].completeDayList[day][2] = addCompleteDescription;
			}
			else{
				this.months[i].completeDayList[day] = [day,href,completeDescription];
			}
			}
		this.months[i].divHTML = '';
		this.months[i].divHTML += '<span style="width:' + startCount + 'px;height:15px;display:block;float:left;"></span>';			
		for(var y = 1; y < this.months[i].daysum + 1; y++){
			if(y < 10){
					var numToString = "0" + y;
					}
				else{
					var numToString = y;
					}				
			if(!this.months[i].completeDayList[y]){				
				this.months[i].divHTML += '<span class="number">' + numToString + '</span>';
			}
			else{
				var tempHTML = '<span class="number_hi"><a class="numberlink" onmouseover="showEventDescription(calendar.months[' + i + '].completeDayList[' + y + '][2])" onmouseout="hideEventDescription()" href="' + this.months[i].completeDayList[y][1] + '">' + numToString + '</a></span>';
			 	this.months[i].divHTML += tempHTML;
			}
		
			}	
		//alert(this.months[i].html);
	}
}

function initCalendar(){
	var actualDate = new Date()
	var month = actualDate.getMonth() + 1;
	var year = actualDate.getFullYear();
	var checkDate = "m" + parseInt(month) + parseInt(year);
	for(var i = 0; i < calendar.months.length; i++){
		if(checkDate == calendar.months[i].name){
			activeMonth = i;
			break;
			}
	}
	var startHTML = calendar.months[activeMonth].divHTML;
	var startDate = getFullDateName(calendar.months[activeMonth].name);
	document.getElementById("calendarcontent").innerHTML = startHTML;
	if(navigator.appVersion.indexOf("MSIE 5") != -1 && isMac){
		document.getElementById("chosenDate").style.width = 110 + "px";
	}
	document.getElementById("chosenDate").innerHTML = startDate;
	document.getElementById("calendarcontent").style.width = 163 + "px";
	document.getElementById("calendarcontent").style.display = "block";
	document.getElementById("calendarcontent").style.visibility = "visible";
}

function showEventDescription(whichEvent){
	document.getElementById("eventdescription").innerHTML = whichEvent;
	document.getElementById("descriptioncontainer").style.display = "block";
	document.getElementById("descriptioncontainer").style.visibility = "visible";
}
	
function hideEventDescription(){
	document.getElementById("eventdescription").innerHTML = '';
	document.getElementById("descriptioncontainer").style.display = "none";
	document.getElementById("descriptioncontainer").style.visibility = "hidden";
}

function switchMonthForward(){
	activeMonth = activeMonth + 1;
	if(activeMonth >= calendar.months.length) activeMonth = calendar.months.length -1;
	var newMonthName = calendar.months[activeMonth].name;
	newMonthName = getFullDateName(newMonthName);
	if(navigator.appVersion.indexOf("MSIE 5") != -1 && isMac){
		document.getElementById("chosenDate").innerHTML = '';
	}
	document.getElementById("chosenDate").innerHTML = newMonthName;
	document.getElementById("calendarcontent").innerHTML = calendar.months[activeMonth].divHTML;	
}

function switchMonthBack(){
	activeMonth = activeMonth - 1;
	if(activeMonth <= 0) activeMonth = 0;
	var newMonthName = calendar.months[activeMonth].name;
	newMonthName = getFullDateName(newMonthName);
	if(navigator.appVersion.indexOf("MSIE 5") != -1 && isMac){
		document.getElementById("chosenDate").innerHTML = '';
	}
	document.getElementById("chosenDate").innerHTML = newMonthName;
	document.getElementById("calendarcontent").innerHTML = calendar.months[activeMonth].divHTML;	
}

//get complete year and month out of array-name
function getFullDateName(chosenMonth){
	var dateString = chosenMonth;
	dateString = dateString.substr(1,dateString.length);
	var yearString = dateString.substr(dateString.length - 4,dateString.length);
	var monthString = dateString.substr(0,dateString.length - 4);
	var monthInt = parseInt(monthString) -1;
	monthString = monthFullnames[monthInt];
	var fullName = monthString + " " + yearString;
	return(fullName);	
}

//----- glossary functions ------


/* Sets/ Resets the text of input field
 */
function setInputText(input, defaultText)
{
	if(input.value == defaultText)
	{
		input.value="";
	}
	else if(input.value == "")
	{
		input.value = defaultText;
	}
}

// holds the most recently selected letter
var previuoslySelected;

/* highlights index entry and abc-nav-element of selected letter
 * letter: selected letter
 * clearSelected: clear/ de-highlight most recent selection
 */
function highlightLetter(letter, clearSelected) 
{
	letter = letter.toUpperCase();
	// assign highlighting css-styles
	document.getElementById('glossary_letter_headline_'+letter).className = "glossary_letter_headline_hi";
	document.getElementById('glossary_letter_contents_'+letter).className = "glossary_letter_contents_hi";
	document.getElementById('glossary_letter_head_'+letter).className = "glossary_letter_head_hi";	
	document.getElementById('glossary_abc_letter_'+letter).className = "glossary_abc_letter_hi";	
	document.getElementById('glossary_abc_link_'+letter).className = "glossary_abc_link_hi";
	
	
	// undo highlighting of previously selected entry
	if(previuoslySelected&&clearSelected&&previuoslySelected!=letter)
	{
		dehighlightLetter(previuoslySelected);
	}
	if(clearSelected)
	{
		previuoslySelected = letter;
	}
}

/* de-highlights index entry and abc-nav-element of selected letter
 */
function dehighlightLetter(letter)
{	
	letter = letter.toUpperCase();
	// assign non-highlighted css-styles
	document.getElementById('glossary_letter_headline_'+letter).className = "glossary_letter_headline";
	document.getElementById('glossary_letter_contents_'+letter).className = "glossary_letter_contents";
	document.getElementById('glossary_letter_head_'+letter).className = "glossary_letter_head";
	document.getElementById('glossary_abc_letter_'+letter).className = "glossary_abc_letter";
	document.getElementById('glossary_abc_link_'+letter).className = "glossary_abc_link";
}

/* limit displayed select entries according to input
 */
function limitEntries(selectForm, currentInput){
	var limitedEntries;
	var option;
	var title;
	var match;
	var lengthLimited;

	lengthLimited = 0;
	
	// compute length of limited Array	
	for(i = 0; i < entries.length; i++)
	{
		title = entries[i][0];
		match = title.toLowerCase().search(new RegExp(currentInput.toLowerCase()));	
		if(match != -1)
		{
			lengthLimited++;						
		}		
	}
	
	limitedEntries = new Array(lengthLimited);	
	

	// fill limited array
	for(i = 0; i < entries.length; i++)
	{
		title = entries[i][0];
		match = title.toLowerCase().search(new RegExp(currentInput.toLowerCase()));
				
		if(match != -1)
		{			
			limitedEntries.push(entries[i]);			
		}		
	}		
			
	// fill select box with options out of limitedEntries
	
	clearSelect(selectForm);		
	for(i = 0; i < limitedEntries.length; i++)
	{
		if(limitedEntries[i] != null)
		{
			option = new Option(limitedEntries[i][0], limitedEntries[i][1], false, false);
			selectForm.options[selectForm.options.length] = option;	
		}
	}
}

// switches window.location to currently selected select-option
function switchTo(currentSel){	
	window.location.href = currentSel.options[currentSel.selectedIndex].value;
}

// Clears the selectbox
function clearSelect(selectForm) {  
   var length;
   //length = document.glossaryForm.glossarySearchSelect.options.length;
   length = selectForm.options.length;
   if(length>0)
   {
	   for (i = length; i >= 0; i--) {	   
	      document.glossaryForm.glossarySearchSelect.options[i] = null;
	   }
   }
     
}

//--------------END glossary functions------------------