Page= {};
Kitchen= {};
Util= {};
Showroom= {};

/* window events */
$(document).ready(function () {	
	Page.init();
});

Page= {
	width: 990,
	height: 620,
	
	init: function() {
		var dimensions= Util.getWindowSize();
		/* check maxheight */
		if(dimensions[1]>815) {
			dimensions[1]= 815;
		}
		
		if(dimensions[0]<Page.width) {
			dimensions[0]=Page.width;
		}
		if(dimensions[1]<Page.height) {
			dimensions[1]=Page.height;
		}
		
		$("#background").css("width", dimensions[0]).css("height", dimensions[1]);
		$("#page").css("height", dimensions[1]);
		$("#page .content").css("height", (dimensions[1]-55));
		$("#shadow").css("width", dimensions[0]).css("height", dimensions[1]);
		$("#showroom").css("left", (dimensions[0]-800)/2);
		
		/* navigation */
		$("#page .header .bar_navigation li a").hover(function() {
			if(!$(this).attr("class").match("active")) {
				$(".standard", this).hide();
				$(".hover", this).show();
			}
		}, function() {
			if(!$(this).attr("class").match("active")) {
				$(".standard", this).show();
				$(".hover", this).hide();
			}
		});
		/* language */
		$("#page .bar_language a").hover(function() {
			if(!$(this).attr("class").match("active")) {
				$(".standard", this).hide();
				$(".hover", this).show();
			}
		}, function() {
			if(!$(this).attr("class").match("active")) {
				$(".standard", this).show();
				$(".hover", this).hide();
			}
		});
		/* modelselect */
		$("#page .modelselect a").hover(function() {
			if(!$(this).attr("class").match("active")) {
				$(".standard", this).hide();
				$(".hover", this).show();
			}
		}, function() {
			if(!$(this).attr("class").match("active")) {
				$(".standard", this).show();
				$(".hover", this).hide();
			}
		});
		/* kitchendetails */
		$("#page .kitchendetails .navigation div").hover(function() {
			$(this).addClass("hover");
		}, function() {
			$(this).removeClass("hover");
		});
		$("#page .kitchendetails .navigation .details").click(function() {
			Kitchen.toggleDetails();
		});
		$("#page .kitchendetails .navigation .information").click(function() {
			Kitchen.toggleInformation();
		});
		$("#page .kitchendetails .navigation .colors").click(function() {
			Kitchen.toggleColorlist();
		});
		$("#page .kitchendetails .informationtext").css("height", parseInt($("#page .kitchendetails .informationtext").height())).hide();		
		$("#page .kitchendetails .colorlist").css("height", parseInt($("#page .kitchendetails .colorlist").height())).hide();
		/* imagedetails */
		$("#page .imagedetails .imagebutton").hover(function() {
			if(!$(this).attr("class").match("active")) {
				$(".standard", this).hide();
				$(".hover", this).show();
			}
		}, function() {
			if(!$(this).attr("class").match("active")) {
				$(".standard", this).show();
				$(".hover", this).hide();
			}
		}).click(function() {
			if(!$(this).hasClass("active")) {
				counter= $(this).attr("id").replace(/imagebutton/, '');
				marginLeft= (counter-1)*450*-1;
				$("#page .imagedetails .sledge").animate({
					marginLeft: marginLeft
				}, 300);
				$("#page .imagedetails .imagebutton").removeClass("active");
				$("#page .imagedetails .imagebutton .standard").show();
				$("#page .imagedetails .imagebutton .hover").hide();
				$("#imagebutton"+counter).addClass("active");
			}
		});
		$("#page .imagedetails .imagebutton:last").addClass("active");
		$("#page .content .imagedetails").css("height", parseInt($("#page .content .imagedetails").height())).hide();
		/* informationselect */
		$("#page .informationselect a").hover(function() {
			if(!$(this).attr("class").match("active")) {
				$(".standard", this).hide();
				$(".hover", this).show();
			}
		}, function() {
			if(!$(this).attr("class").match("active")) {
				$(".standard", this).show();
				$(".hover", this).hide();
			}
		});
		$("#shadow").click(function() {
			Page.closeAll();
		});
		/* slideables */
		Util.initSlideables();
	},
	closeAll: function() {
		$("#showroom").hide();
		$("#shadow").hide();
		$("#flippingbook").hide();
		$("#captcha").hide();
	}
}

Kitchen= {
	toggleDetails: function() {
		var height= 0;
		var bakHeight= 0;
		if($("#page .imagedetails").css("display")=="none") {
			height= parseInt($("#page .imagedetails").css("height"));
			$("#page .imagedetails").css("height", 0).show();
		} else {
			bakHeight= parseInt($("#page .imagedetails").css("height"));
		}
		
		$("#page .imagedetails").animate({
			height: height
		}, 300, 'linear', function() {
			if(parseInt($("#page .imagedetails").css("height"))==0) {
				$("#page .imagedetails").css("height", bakHeight).hide();
				$("#page .kitchendetails .navigation .details").removeClass("active");
			} else {
				$("#page .kitchendetails .navigation .details").addClass("active");
			}
		});
	},
	toggleInformation: function() {
		var height= 0;
		var bakHeight= 0;
		if($("#page .kitchendetails .informationtext").css("display")=="none") {
			height= parseInt($("#page .kitchendetails .informationtext").css("height"));
			$("#page .kitchendetails .informationtext").css("height", 0).show();
		} else {
			bakHeight= parseInt($("#page .kitchendetails .informationtext").css("height"));
		}
		
		$("#page .kitchendetails .informationtext").animate({
			height: height
		}, 300, 'linear', function() {
			if(parseInt($("#page .kitchendetails .informationtext").css("height"))==0) {
				$("#page .kitchendetails .informationtext").css("height", bakHeight).hide();
				$("#page .kitchendetails .navigation .information").removeClass("active");
			} else {
				$("#page .kitchendetails .navigation .information").addClass("active");
			}
		});
	},
	toggleColorlist: function() {
		var height= 0;
		var bakHeight= 0;
		if($("#page .kitchendetails .colorlist").css("display")=="none") {
			height= parseInt($("#page .kitchendetails .colorlist").css("height"));
			$("#page .kitchendetails .colorlist").css("height", 0).show();
		} else {
			bakHeight= parseInt($("#page .kitchendetails .colorlist").css("height"));
		}

		$("#page .kitchendetails .colorlist").animate({
			height: height
		}, 300, 'linear', function() {
			if(parseInt($("#page .kitchendetails .colorlist").css("height"))==0) {
				$("#page .kitchendetails .colorlist").css("height", bakHeight).hide();
				$("#page .kitchendetails .navigation .colors").removeClass("active");
			} else {
				$("#page .kitchendetails .navigation .colors").addClass("active");
			}
		});
	}
}

Util= {
	getWindowSize: function(){
		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) {
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else if(document.body) { 
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}

		var windowWidth, windowHeight;
		if (self.innerHeight) {
			if(document.documentElement.clientWidth){
				windowWidth = document.documentElement.clientWidth;
			} else {
				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;
		}

		if(yScroll < windowHeight) {
			pageHeight = windowHeight;
		} else {
			pageHeight = yScroll;
		}

		if(xScroll < windowWidth) {
			pageWidth = xScroll;
		} else {
			pageWidth = windowWidth;
		}

		var arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
		return arrayPageSize;
	},
	initSlideables: function() {
		$("#page .slideable").each(function() {
			var slideable= $(this);
			var classes= slideable.attr("class").split(" ");
			var height= slideable.height();
			for(var index=0; index<classes.length; index++) {
				if(classes[index].match("height")) {
					height= classes[index].replace(/height/g, '');
				}
			}
			if(height<slideable.height()) {
				/* set slideable */
			    slideable.html('<div class="slideable_content" style="width: '+(slideable.width()-10)+'px;">'+slideable.html()+'</div><div class="slideable_slider" style="height: '+height+'px;"></div>');	
				var overflow= $('.slideable_content', slideable).height()-height;
				$(".slideable_slider", slideable).slider({ 
					slide: function(event, ui) {
					 	var top= parseFloat(overflow*ui.value/100);
						$(".slideable_content", slideable).css('margin-top', '-' + top + 'px');
					}, 
					stop: function(event, ui) {
						var top= overflow*ui.value/100;
						$(".slideable_content", slideable).animate({ 'margin-top' : '-' + top + 'px' }, 500, 'linear');
					}
				});
				
				/* set frame */
				slideable.css("width", slideable.width()).css("height", height);
			}
		});
	},
	validateForm: function(id, captcha) {
		var result= true;
		$("#"+id + " input, #"+id + " textarea").each(function() {
			if($(this).attr("class") && $(this).attr("class").match("required")) {
        // trim input field
			  $(this).val($(this).val().replace(/^\s+|\s+$/g, ''));
				var itemresult= Util.validate($(this).attr("id"));
				result= result && itemresult;
			}
		});
		if(result) {
			$("#form_error").removeClass("error");
			if(captcha) {
				Captcha.show(id);
			} else {
				Captcha.formIsValid= true;
			}
		} else {
			$("#form_error").addClass("error");
		}
		result= result && Captcha.formIsValid;
		
		return result;
	},
	validate: function(id) {
		var result= true;
		var obj= $("#"+id);
		var commands= $("#"+id).attr("class").split(" ");
		for(var i=0; i<commands.length; i++) {
			var command= commands[i].replace(/[0-9]/g, "");
			switch(command) {
				case("minlength"):
					var length= parseInt(commands[i].replace(/minlength/g, ""));
					result= result && (obj.val().length>=length);
					break;
				case("maxlength"):
					var length= parseInt(commands[i]);
					result= result && (obj.val().length<=length);
					break;
				default:
					result= result && (obj.val().length!=0);
					break;
			}
		}
		if(!result) {
			obj.addClass("error");
		} else {
			obj.removeClass("error");
		}
		return result;
	}
}

Captcha= {
	form: '',
	formIsValid: false,
	
	show: function(form) {
		Captcha.form= form;
		Captcha.set();
		$("#shadow").show();
		$("#captcha").css("display", "block");
	},
	set: function() {
		var dimension= Util.getWindowSize();
		
		var width= dimension[0];
		var height= dimension[1];
		
		if(dimension[0]<dimension[2]) {
			width= dimension[2];
		}
		if(dimension[1]<dimension[3]) {
			height= dimension[3];
		}
		
		$("#shadow").css("height", height).css("width", width);
		
		var top= (height-240)/2;
		var left= (width-320)/2;
		
		$("#captcha").css("top", top).css("left", left);
	},
	isValid: function() {
		$("#shadow").hide();
		$("#captcha").hide();
		Captcha.formIsValid= true;
		
		document.forms[Captcha.form].submit();
	}
}

FlippingBook= {
	show: function(url) {
		FlippingBook.set();
		$("#shadow").show();
		$("#flippingbook").attr("src", url).show();
	},
	close: function() {
		$("#shadow").hide();
		$("#flippingbook").hide();
	},
	set: function() {
		var dimension= Util.getWindowSize();
		
		var width= dimension[0];
		var height= dimension[1];
		
		if(dimension[0]<dimension[2]) {
			width= dimension[2];
		}
		if(dimension[1]<dimension[3]) {
			height= dimension[3];
		}
		
		$("#shadow").css("height", height).css("width", width);
		
		var top= (height-820)/2;
		var left= (width-1025)/2;
		
		$("#flippingbook").css("top", top).css("left", left);
	}
}

Showroom= {
	show: function(name, flash) {
		$("#shadow").show();
		$('#showroomflash').html("").flash({
		    src: flash,
		    width: 800,
		    height: 520,
			allowFullScreen: 'true'
		});
		$("#showroom .name").html(name);
		$("#showroom").show();
		$("#showroom .close").show().unbind("click").click(function () {
			Showroom.close();
		});
	},
	close: function() {
		$("#showroom").hide();
		$("#shadow").hide();	
	}
}

Event= {
	keyHandler: function(event) {
		var kC= (window.event) ? event.keyCode : event.keyCode;
		var Esc = (window.event) ? 27 : event.DOM_VK_ESCAPE;
		if(kC==Esc) { 
			Page.closeAll();
		}
	}
}