// JavaScript Document
var appendWhereId = "hideHere";
var containerId = "displayImagesMain";
var loadingStateId = "showLoadingProgress";
var loadingStateContent = "Loading...";
var hidingLayerId = "hideAll";
var bigImageId = "theBigImage";
var defaultImageType = "h";
var defaultImageWidth = 800;
var imageContainerId = "viewpictures";

var MN = {
	create: function(type){
		return document.createElement(type);
	},
	gE: function(id){
		return document.getElementById(id);
	},
	del: function(id){
		if(document.getElementById(id)){
			var rem = document.getElementById(id);
			return rem.parentNode.removeChild(rem);
		}
		else{
			alert("Element '"+id+"' existiert nicht");
		}
	},
	forward: function(url){
		location.href = url;
	},
	str_replace: function(search,replace,str){
		if(str == "" || str == null || search == "") return "";
		
		if(str.indexOf(search) > -1){
			var start = str.indexOf(search);
			var length = search.length;
			var ret = str.substr(0,start)+replace+str.substr(start+length);
			return ret;
		}
		else return str;
	},
	
	clearInner: function(obj){
		//to do
		if(obj.hasChildNodes()){
			while(obj.firstChild){
 				obj.removeChild(obj.firstChild);
			}
		}
	},
	
	input: function(type,name,value){
		var obj = MN.create("input");
		obj.type = type;
		obj.name = name;
		obj.value = value;
		return obj;
	},
	
	optionsFromData: function(obj, data, preValue, preSelect){
		//preValue gets selected
		//preSelect disables the automatic selection of the only item in the list
		var dataArr = data.split("___");
		// reset options
		if(obj.options) obj.options.length = 0;
		
		var opt = MN.create("option");
		opt.value = 0;
		var optInner = document.createTextNode("w�hle");
		opt.appendChild(optInner);
		obj.appendChild(opt);
		if(dataArr.length > 0){
			for(var i=0; i<dataArr.length; i++){
				var optArr = dataArr[i].split("==");
				if(optArr.length != 2) break;
				var opt = MN.create("option");
				opt.value = optArr[0];
				var optInner = document.createTextNode(optArr[1]);
				if(preValue){
					if(optArr[0] == preValue) opt.selected = true;
				}
				opt.appendChild(optInner);
				obj.appendChild(opt);
			}
		}
		if(!preValue){
			if(dataArr.length == 1 && dataArr[0] != "" && preSelect == null){ obj.options[1].selected = true; }
			else { obj.options[0].selected = true; }
		}
		
	},
	
	
	includeFromData: function(obj, data){
		// reset options
		obj.innerHTML = "";
		
		var ul = MN.create("ul");
		if(data.length > 0){
			var dataArr = data.split("___");
			for(i=0; i<dataArr.length; i++){
				var optArr = dataArr[i].split("==");
				var li = MN.create("li");
				var liInner = document.createTextNode(optArr[1]);
				li.appendChild(liInner);
				ul.appendChild(li);
			}
		}
		else{
			var li = MN.create("li");
			var liInner = document.createTextNode("Keine Modelle vorhanden");
			li.appendChild(liInner);
			ul.appendChild(li);
		}
		obj.appendChild(ul);
	},
	
	loading: function(){
		if(MN.gE("loadingState") != null) MN.del("loadingState");
		var l = MN.create("div");
		l.id = "loadingState";
		l.appendChild(document.createTextNode("Laden..."));
		document.body.appendChild(l);
	},
	
	loadingDone: function(){
		if(MN.gE("loadingState") != null) MN.del("loadingState");
	}
};
var Images = {
	startMailPictures: function(){
		Images.startHidingLayer();
		
		var arrayPageSize = getPageSize();
		var dialogW = 300;
		var dialogH = 200;
		var startW = (arrayPageSize[2]-dialogW)/2;
		var startH = (arrayPageSize[3]-dialogH)/2;
		var dialog = MN.create("div");
		dialog.style.marginLeft = startW+"px";
		dialog.style.marginTop = startH+"px";
		dialog.id = "dialog";
		var form  = MN.create("form");
		form.onsubmit = Images.mailNow;
		form.name = "mailEm";
		form.action = "hpage/help_mailpictures.php";
		form.method = "get";
		var formT = document.getElementById("hiddenMailForm").innerHTML;
		form.innerHTML = formT;
		dialog.appendChild(form);
		document.getElementById(hidingLayerId).appendChild(dialog);
		
	},
	startHidingLayer: function(){
		//Images.endHidingLayer();
		var hideAll = MN.create("div");
		hideAll.id = hidingLayerId;
		hideAll.style.display = "block";
		var arrayPageSize = getPageSize();
		hideAll.style.height = arrayPageSize[1]+"px";
		hideAll.style.width = arrayPageSize[0]+"px";
		MN.gE(appendWhereId).appendChild(hideAll);
	},
	
	endHidingLayer: function(){
		if(MN.gE(hidingLayerId)){
			return MN.del(hidingLayerId);
		}
	},
	
	mailNow: function(){
		if(document.mailEm.email.value.length > 2){
			return true;
		}
		else{
			alert("Bitte Emailaddresse eingeben!");
		}
		return false;
	},
	
	displayPictures: function(dir,picnum){
		Images.startHidingLayer();
		var vid = MN.gE("vid_down").value;
		var a = new Ajax();
		a.url = "/pages/help_displaypictures.php";
		a.params = "vid="+vid;
		a.onError = function(txt){ alert("Fehler beim Laden des Bildes.\nM�glicherweise existiert das Bild nicht im gew�nschten Format."); };
		a.onSuccess = function(filenames_str){
			
			// not for IE
			if(navigator.appName.indexOf("Explorer") == -1){
				var d = MN.create("div");
				d.id = imageContainerId;
				var man = MN.gE("vehicle_header").value;
				var h1 = MN.create("h1");
				var table = MN.create("table");
				var tr = MN.create("tr");
				tr.style.verticalAlign = "top";
				var td1 = MN.create("td");
				var td2 = MN.create("td");
				var td3 = MN.create("td");
				td1.style.width = 62+"px";
				td1.style.paddingTop = 78+"px";
				td2.style.width = defaultImageWidth+10+"px";
				td2.style.textAlign = "center";
				td3.style.width = td1.style.width;
				td3.style.paddingTop = td1.style.paddingTop;
				
				var cImage = MN.create("img");
				cImage.src = "/images/closebutton.png";
				cImage.onclick = function(){ Images.endDisplayPictures(); };
				cImage.id = "closeButton";
				cImage.alt ="";
				cImage.title = "schliessen";
				var p = MN.create("p");
				p.appendChild(cImage);
				h1.style.color = "white";
				h1.style.textAlign = "left";
				h1.appendChild(document.createTextNode(man));
				table.appendChild(tr);
				tr.appendChild(td1);
				tr.appendChild(td2);
				tr.appendChild(td3);
				td2.appendChild(p);
				td2.appendChild(h1);
			
				// load the big picture
				var imgM = MN.create("img");
				imgM.src = dir+vid+"_"+picnum+"_"+defaultImageType+".jpg";
				imgM.className = "big";
				imgM.id = "bigIm";
				imgM.onload = function(txt){
					
					td2.appendChild(imgM);
					// load the thumbnails
					var filenames = filenames_str.split(",");
					var ul1 = MN.create("ul");
					var ul2 = MN.create("ul");
					
					for(var i=1; i<=filenames.length; i++){
						if(filenames[i-1].length < 2) continue; 
						var obj = ul1;
						if(i > filenames.length/2) obj = ul2;
						var li = MN.create("li");
						var img = MN.create("img");
						img.src = dir+filenames[i-1];
						currNum = i;
						img.onclick = function(){ Images.switchPic(dir, this); };
						li.appendChild(img);
						obj.appendChild(li);
					}
					
					td1.appendChild(ul1);
					td3.appendChild(ul2);
					d.appendChild(table);
					
					MN.gE(hidingLayerId).appendChild(d);
			
					for(o=0; o<=50; o++){
						var opacityValue = o/50;
						setTimeout("Images.setOpacity('"+imageContainerId+"',"+opacityValue+")", o*5);
						setTimeout("Images.setOpacity('bigIm','"+opacityValue+"')", o*6+200);
					}
					
				};
			}
			// IE
			else{
				
				var d = MN.create("div");
				d.id = imageContainerId;
				var man = MN.gE("vehicle_header").value;
				var h1 = MN.create("h1");
				
				var cImage = document.createElement("img");
				cImage.src = "/images/closebutton.png";
				cImage.onclick = function(){ Images.endDisplayPictures(); };
				cImage.id = "closeButton";
				cImage.alt ="";
				cImage.title = "schliessen";
				var p = MN.create("p");
				p.appendChild(cImage);
				h1.style.color = "white";
				h1.style.textAlign = "left";
				h1.appendChild(document.createTextNode(man));
				d.appendChild(p);
				d.appendChild(h1);
				
				var imgM = MN.create("img");
				imgM.src = dir+vid+"_"+picnum+"_"+defaultImageType+".jpg";
				imgM.className = "big";
				imgM.id = "bigIm";
				// load the thumbnails
				var filenames = filenames_str.split(",");
				var ul = MN.create("ul");
				
				for(var i=1; i<=filenames.length; i++){
					if(filenames[i-1].length < 2) continue;
					var li = MN.create("li");
					var img = MN.create("img");
					img.src = dir+filenames[i-1];
					currNum = i;
					img.onclick = function(){ Images.switchPic(dir, this); };
					li.appendChild(img);
					ul.appendChild(li);
				}
				
				d.appendChild(ul);
				d.appendChild(imgM);
				MN.gE(hidingLayerId).appendChild(d);
		
				for(o=0; o<=50; o++){
					var opacityValue = o/50;
					setTimeout("Images.setOpacity('"+imageContainerId+"',"+opacityValue+")", o*5);
					setTimeout("Images.setOpacity('bigIm','"+opacityValue+"')", o*6+200);
				}
			}
			
		};
		a.doRequest();
	},
	
	setOpacity: function(id,v){
		MN.gE(id).style.MozOpacity = v;
		MN.gE(id).style.filter = "alpha(opacity="+v*100+")";
	},

	switchPic: function(dir, imgobj){
		var globalId = "bigIm";
		var appHere = MN.gE(globalId).parentNode;
		MN.del(globalId);
		var imgM = MN.create("img");
		imgM.id = globalId;
		imgM.style.MozOpacity = 0;
		imgM.style.filter = "alpha(opacity=0)";
		appHere.appendChild(imgM);
		var src = imgobj.src;
		var parts = src.split("_");
		// not for IE
		if(navigator.appName.indexOf("Explorer") == -1){
			var Aj = new Ajax();
			Aj.url = parts[0]+"_"+parts[1]+"_"+defaultImageType+".jpg";
			Aj.onSuccess = function(){
				imgM.src = parts[0]+"_"+parts[1]+"_"+defaultImageType+".jpg";
				
				for(o=1; o<=50; o++){
					var opacityValue = o/50;
					setTimeout("Images.setOpacity('bigIm','"+opacityValue+"')", o*2+300);
				}
			};
			Aj.doRequest();
		}
		else{
			imgM.src = parts[0]+"_"+parts[1]+"_"+defaultImageType+".jpg";
			for(o=1; o<=50; o++){
				var opacityValue = o/50;
				setTimeout("Images.setOpacity('bigIm','"+opacityValue+"')", o*2+300);
			}
		}
	},
	
	endDisplayPictures: function(){
		if(MN.gE(imageContainerId)){
			var o = 1;
			for(o=1; o<=50; o++){
				var opacityValue = 1-o/50;
				setTimeout("Images.setOpacity('"+imageContainerId+"','"+opacityValue+"')", o*6);
			}
			setTimeout("MN.del('"+imageContainerId+"')",o*6+25);
			setTimeout("Images.endHidingLayer()",o*6+50);
		}
		else if(MN.gE(hidingLayerId)){
			Images.endHidingLayer();
		}	
	},
	
	picturesOpened: function(){
		return (MN.gE(hidingLayerId)) ? true : false;
	}
};
var Gallery = {
	displayImage: function(source,target){
		var t = MN.gE(target);
		MN.clearInner(t);
		var img = document.createElement("img");
		img.src = source;
		img.alt = "";
		img.onload = function(){
			t.appendChild(img);
		}
	}
};
function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	
	if (self.innerHeight) {	// all except Explorer
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth; 
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = xScroll;		
	} else {
		pageWidth = windowWidth;
	}
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight,xScroll,yScroll);
	return arrayPageSize;
}
var Message = {
	send: function(){
		if(this.checkForm()){
			var form = document.sendMessage;
			this.doSend(form.message.value, form.telefon.value, form.name.value, form.email.value, form.subject.value);
		}
		return false;
	},
	
	checkForm: function(){
		var form = document.sendMessage;
		var errMsgs = document.getElementById("err_message").innerHTML;
		var errMsgs = errMsgs.split("|");
		for(i=0; i<form.elements.length; i++){
			if(form.elements[i].value.length > 1) form.elements[i].style.backgroundColor = "";
		}
		var error = false;
		var errmsg = "";
		if(form.name.value.length < 2){
			error = true;
			errmsg += errMsgs[0]+"\n";
		}
		if(form.email.value.length < 2 && form.telefon.value.length < 2){
			error = true;
			errmsg += errMsgs[1]+"\n";
			errmsg += errMsgs[2]+"\n";
		}
		if(form.message.value.length < 2){
			error = true;
			errmsg += errMsgs[3]+"\n";
		}
		if(error){
			alert(errmsg);
			for(i=0; i<form.elements.length; i++){
				if(form.elements[i].value.length < 2) form.elements[i].style.backgroundColor = "#DFA7A7";
			}
			return false;
		}
		else{
			return true;
		}
	},
	
	doSend: function(mes, tel, name, mail, subject){
		var form = document.sendMessage;
		for(i=0; i<form.elements.length; i++){
			form.elements[i].disabled = true;
		}
		document.getElementById("sending_message").style.visibility = "visibile";
		var mA = new Ajax();
		mA.params = "message="+mes+"&telefon="+tel+"&name="+name+"&email="+mail+"&subject="+subject;
		mA.url = "/index.php?page=contact";
		mA.method = "POST";
		mA.onSuccess = function(txt){
			Message.finishIt(txt);
		}
		mA.doRequest();
	},
	
	finishIt: function(txt){
		document.getElementById("form_contact_t").style.display = "none";
		document.getElementById("sending_message").style.display = "none";
		document.getElementById("sent_message").style.visibility = "visible";
	}
}
function startPrint(){
	var obj = document.getElementById("printmenu");
	obj.style.visibility = (obj.style.visibility == "hidden" || obj.style.visibility == "") ? "visible" : "hidden";
}
