//###################################################
// (C) Copyright 11/2006 BMW Group
// WDS - Wiring Diagram System
//###################################################

//#################### General MESSAGE Section ######################################
var noSVGMsg = "No wiring diagram displayed !";
var onlyIEMsg = "Sorry\nonly works with Internet Explorer 5.5 or higher!";
var enterMSG1 = "Search also finds parts of a term,\n e.g. screen will find windscreen";
var enterMSG2 = "Please enter search term.";
var enterMSG3 = " - not found!";
var enterMSG4 = "Please try again.";
var enterMSG5 = " - no more matches found!";
var buttonLabel_search  = "Search";
var buttonLabel_next  = "Next";



//#################### META Section ######################################

//basic settings htm zoom
var ihtm = 1;			//basic step counter
var step = 0.01;		//Faktor vor zooming
var maxzoom = 2;		//Maximum Faktor for HTML
var minzoom = 0.5;		//Minimum Faktor for HTML

//basic settings for svg zoom 
var maxzoomsvg = 16;	// max zoom in
var minzoomsvg = 0.5;	// min zoom out
var zoomfaktor = 1.05;	//Faktor for zooming step
var panfaktor = 10;		//Faktor for panning step, 25 = 25 pixel

//timeout variables
var stime;
var sbreak = false; 
var speedtimeout = 10;	// speed of zooming, paning steps

//#################### Browser Detection Section ######################################
var btype;
//internet explorer
if ((document.all) && (navigator.appName == "Microsoft Internet Explorer")) {
	btype = "iexp4";
	if (document.documentElement){
		btype = "iexp55";
	}
}
//netscape navigator 4.5
if (document.layers) {
	btype = "nn45";
}
//netscape navigator 6, mozilla, firefox, ecma
if ((document.documentElement)&&(navigator.appName != "Microsoft Internet Explorer")) {
	btype = "ecma";
}

//#################### Functions ######################################
//IMPORTANT:
//do not define global vars, attributes are set dynamically! 
//vars svgimg, svgroot must be initialized by every event or function call !


//#################### zooming documents ######################################
//check for svg
function checkforsvg() {
	if (parent.frames["main"].location.href.indexOf("/svg/") == (-1)){
		return false
	} else {
		return true;
	}
}

//Complete View - all schematic on screen
function completeview() {
    if (checkforsvg()) {
		parent.main.document.location.reload();
	} else {
		alert(noSVGMsg);
	}
}

//print svg
function printmulti() {
  if (checkforsvg()) {
		parent.main.focus(); 
		parent.main.print();
	} else {
		alert(noSVGMsg);
	}		
}

//Zoomin document
function zoomin() {
	if (checkforsvg()) {
	//zoom SVG
		var svgimg = parent.main.document.embeds[0].getSVGDocument();
		var svgroot = svgimg.getElementById("svgid");
		var oldscale = svgroot.currentScale;
		var newscale = oldscale * zoomfaktor;
		//set max scale
		if (newscale > maxzoomsvg) {
			svgroot.currentScale = maxzoomsvg;
		} else {
			svgroot.currentScale = newscale;
			stime = setTimeout("zoomin()",speedtimeout);
			sbreak = true;			
		}
	} else {
	//html zoom only IE (ihtm is set to 1 in tree.js !)
		if (btype == "iexp55") {
			ihtm = ihtm + step;
			if (ihtm < maxzoom) {
				parent.main.document.body.style.zoom = ihtm;	
				stime = setTimeout("zoomin()",speedtimeout);
				sbreak = true;			
			} else {
				ihtm = maxzoom;
			}
		} else {
			alert(onlyIEMsg);
		}			
	}
}

//Zoomout document
function zoomout() {
	if (checkforsvg()) {
	//zoom SVG  	
		var svgimg = parent.main.document.embeds[0].getSVGDocument();
		var svgroot = svgimg.getElementById("svgid");
		var oldscale = svgroot.currentScale;
		var newscale = oldscale/zoomfaktor;
		//set min scale
		if (newscale < minzoomsvg) {
			svgroot.currentScale = minzoomsvg;
		} else {
			svgroot.currentScale = newscale;
			stime = setTimeout("zoomout()",speedtimeout);
			sbreak = true;			
		}  	
	} else {
	//html zoom only IE (ihtm is set to 1 in tree.js !)
		if (btype == "iexp55") {
			ihtm = ihtm - step;
			if (ihtm > minzoom) {
				parent.main.document.body.style.zoom = ihtm;		
				stime = setTimeout("zoomout()",speedtimeout);
				sbreak = true;			
			} else {
				ihtm = minzoom;	
			}
		} else {
			alert(onlyIEMsg);
		}
	}
}

//pan left svg
function panleft() {
	var svgimg = parent.main.document.embeds[0].getSVGDocument();
	var svgroot = svgimg.getElementById("svgid");
	var oldx = svgroot.currentTranslate.x;
	var newx=oldx - panfaktor
	svgroot.currentTranslate.x=newx;
	stime = setTimeout("panleft()",speedtimeout);
	sbreak = true;
}

//pan right svg
function panright() {
	var svgimg = parent.main.document.embeds[0].getSVGDocument();
	var svgroot = svgimg.getElementById("svgid");
	var oldx = svgroot.currentTranslate.x;
	var newx=oldx + panfaktor
	svgroot.currentTranslate.x=newx;
	stime = setTimeout("panright()",speedtimeout);
	sbreak = true;		
}

//pan up svg
function panup() {
	var svgimg = parent.main.document.embeds[0].getSVGDocument();
	var svgroot = svgimg.getElementById("svgid");
	var oldy = svgroot.currentTranslate.y;
	var newy=oldy - panfaktor
	svgroot.currentTranslate.y=newy;
	stime = setTimeout("panup()",speedtimeout);
	sbreak = true;		
}

//pan down svg
function pandown() {
	var svgimg = parent.main.document.embeds[0].getSVGDocument();
	var svgroot = svgimg.getElementById("svgid");
	var oldy = svgroot.currentTranslate.y;
	var newy=oldy + panfaktor
	svgroot.currentTranslate.y=newy;
	stime = setTimeout("pandown()",speedtimeout);
	sbreak = true;		
}

//clear timeout, stop zooming, panig when mouseout or mouseup
function stopSVG(){ 
	if(sbreak){ 
	clearTimeout(stime);
	} 
}

//#################### Tree Search Section ######################################
//search tree for komponent and open node
function treesearch() {
	var tsearchstr = document.sform.sfield.value;
	if (tsearchstr == "") {
		alert(enterMSG2);
		document.sform.sfield.focus();
	} else {
		parent.navi.document.stree.expand(tsearchstr);
	}
}


//search tree and open node (fulltext search)	
var searchSuccess = false;
var searchKeyword = "";

function searchFirst() {
	var searchResultFirst = "";
	var searchResultNext = "";	
	var keyword = document.sform.sfieldfull.value;
	
	//check for next search
	if ((searchSuccess) && (keyword == searchKeyword)) {
		searchResultNext = parent.navi.document.stree.searchNext(searchKeyword);
		if (searchResultNext == 0) {
			alert(keyword + enterMSG5);
			document.sform.sbutton.value = buttonLabel_search;
			searchSuccess = false;
			searchKeyword = "";				
		}		
	} else {
	//do a first search
		if (keyword == "") {
			alert(enterMSG2 + "\n\n" + enterMSG1);
			document.sform.sfieldfull.focus();
		} else {
			searchResultFirst = parent.navi.document.stree.searchFirst(keyword);
			if (searchResultFirst == 0) {
				document.sform.sfieldfull.select();
				alert(keyword + enterMSG3 + "\n\n"  + enterMSG4 + "\n\n" + enterMSG1);
			} else {
				searchSuccess = true;
				searchKeyword = keyword;
				document.sform.sbutton.value = buttonLabel_next;
			}
		}
	}
}

//reload tree file and reset all search variables
function searchNew() {
	parent.navi.location.reload();
	//parent.navi.document.stree.reload("tree/files.zip");
	document.sform.sfieldfull.value ="";
	document.sform.sfieldfull.focus();
	document.sform.sbutton.value = buttonLabel_search;	
	searchSuccess = false;
	searchKeyword = "";	

}


//#################### Navi Section - show / hide Tree ######################################
//show full navigation
function shownav() {
	if (btype == "iexp55") {
		if (parent.naviframe.cols != "95%,*") {
			parent.naviframe.cols = "95%,*";
		} 
	} else {
		alert(onlyIEMsg);
	}
}
//hide navigation
function hidenav() {
	if (btype == "iexp55") {
		if (parent.naviframe.cols != "5%,*") {
			parent.naviframe.cols = "5%,*";
		} 
	} else {
		alert(onlyIEMsg);
	}
}
//standard navigation view
function middlenav() {
	if (btype == "iexp55") {
		if (parent.naviframe.cols != "40%,*") {
			parent.naviframe.cols = "40%,*";
		} 
	} else {
		alert(onlyIEMsg);
	}
}


