/**

 */
var superInit=init;

init = function() {
	var cornerbg= $('html').css('color');
	
	superInit();
	
	$('#ProductListScrollBar .ui-slider-range').cornerz({radius:5, background: cornerbg, corners: 'tl tr br bl'});
	
	
	$('#selectColor').click(function(){
		selectTab("color");
		initializeColorScrollBar(cornerbg);
	});
	
	$('#selectProduct').click(function(){
		selectTab("product");
	});
	

	$('.contact[rel]').overlay({
		expose: {
			color: '#000',
			closeSpeed: 'slow',
			opacity: 0.5
 		},
 		onClose: function(event) { 
			$('#AnfrageBox').show();
 			$('#FehlerBox').hide();
			$('#BestaetigungBox').hide();
			$('#AnfrageBox td span').remove();
 	    },
		closeOnClick: true,
		closeOnEsc: true,
		api: true
	});
	
	$('.favorites').click(function(){
		$('.contact[rel]').overlay().close();
	});
}
/**

 */
function initHoverAccordion() {
}

/**

 */
function initColorButtons() {
	$('#ColorSelector').addColorPicker({
		clickCallback: function(c) {
			onColorPicker(c);
		},
		colors: [	
		         '#CCC189', '#CEB487', '#D0B172', '#F2AD00', '#E4A700', '#C79600', 
		         '#D99300', '#E69400', '#AF8552', '#D8BA2E', '#E5DFCC', '#DFCEA1', 
		         '#E6D9BD', '#ECEA41', '#F6B256', '#FDDA38', '#A6937A', '#F2C000', 
		         '#B89650', '#A4861A', '#F7A11F', '#EBA557', '#D97604', '#BB4926', 
		         '#C13524', '#E8540D', '#F46F29', '#DB5316', '#D6654E', '#A02725', 
		         '#870A24', '#6C1B2A', '#581E29', '#402226', '#6D312B', '#791F24', 
		         '#C68872', '#CF7178', '#E3A0AC', '#AB392D', '#CC515E', '#CA3F51', 
		         '#BF111B', '#B01D42', '#A7323E', '#865D86', '#903F51', '#CA5B91', 
		         '#69193B', '#7D63A1', '#912D76', '#48243E', '#853D7C', '#9D8593', 
		         '#2F4A70', '#0E4665', '#162E7A', '#193058', '#1A1D2A', '#38618D',
		         '#2D3944', '#245878', '#00427E', '#1A2740', '#2782BB', '#202E53', 
		         '#657A9A', '#0070B5', '#004C91', '#138992', '#005688', '#00747C', 
		         '#28275A', '#486591', '#6391B0', '#327663', '#266D3B', '#276230', 
		         '#4E553D', '#004547', '#0E4438', '#3B3D33', '#2B3626', '#302F22', 
		         '#213529', '#426E38', '#68835F', '#293A37', '#76785B', '#443F31', 
		         '#383B34', '#00654F', '#4D8542', '#4B9B3E', '#B2D8B4', '#394937', 
		         '#87A180', '#3C372A', '#56713D', '#005C54', '#77BBBD', '#2E554B', 
		         '#00855A', '#3F8885', '#75ADB1', '#798790', '#8D969F', '#837C67', 
		         '#79796C', '#9A9A9F', '#6D7170', '#766A5D', '#756444', '#585E55', 
		         '#565957', '#575E62', '#585346', '#4C5057', '#2E3236', '#464644', 
		         '#7E8379', '#484B52', '#354044', '#919089', '#5B686F', '#7A8476', 
		         '#928E75', '#C4CACA', '#7D8083', '#B0B3AF', '#9AA0A7', '#92989A', 
		         '#505455', '#BAB9B0', '#8B7045', '#9C6935', '#774C3B', '#825333', 
		         '#904E3B', '#6B442A', '#725230', '#5B3927', '#64312A', '#49372A', 
		         '#5A2E2A', '#4F3128', '#45302B', '#3B3332', '#1E1A1A', '#A45C32', 
		         '#7A5741', '#765D4D', '#4F3B2B', '#EEE9DA', '#DADBD5', '#F8F9FB'
		         ]
	});
	
}
/**

 */
function initializeModules() {

	
	initializeCategory();
	initializeFilter();
	
	initializeGalleryScroller();
	initializeProductListScrollBar();
	initializeSlider();
}

function showInfoFavoritBox() {

	if ($.browser.msie) $('#infoFavorite').show();
	else $('#infoFavorite').fadeIn('slow');
	setTimeout(function () {
		$('#infoFavorite').animate({opacity: 0, height: 0}, 'slow', function() {


			$('#infoFavorite').removeAttr("style");
		});
	}, 2500);
}

function initializeCategory() {
	showTransparent();
	$('#showPanel').click(function(){
		if($('#transparent').css('display')== 'none'){
			showTransparent();
		}else{
			hideTransparent();
		}
	});
	
	$('#MenuBox').mouseleave(function(){
		hideTransparent();
	});
	
	$('#Content').click(function(){
		hideTransparent();
	});
}

function showTransparent() {
	$('#transparent').slideDown('slow');
	$('#transparent_background').slideDown('slow');
	$('#showPanel').removeClass('showPanelUp').addClass('showPanelDown');
}

function hideTransparent() {
	$('#transparent').slideUp('slow');
    $('#transparent_background').slideUp('slow');
    $('#showPanel').removeClass('showPanelDown').addClass('showPanelUp');
}

function selectTab(tabName) {

	var tabs={
		"product": ["#ProductSelectionBox"],
		"color": ["#ColorBox"]
	}
	
	if(tabs[tabName]==null) {
		alert("unknown tab '"+tabName+"'");
		return;
	}
	
	for(name in tabs) {
		if(name==tabName) {
			$(tabs[name][0]).show(); // content
		} else {
			$(tabs[name][0]).hide();
		}
	}
}

/**

 */
function isCentered() {
    return false;
}

/**

 */
function shapeSelected(sceneObjectIndex) {
	selectSceneObject(sceneObjectIndex);
}

function initializeFilter() {
	

	$('.options').unbind('click');
	$('.options').click(function() {
		if($('#filterOverlay').css('width')!= '300px') {
			showFilter();
		} else {
			hideFilter();
		}
	});
}

function showFilter() {
	if(!$('#filterOverlay').hasClass('CategoryMenuOpen')) {
		$('#filterOverlay').addClass('CategoryMenuOpen');
		
		$('#filterOverlay').animate({width:"300px"}, 700, function() {





			$('#Content').unbind('click', hideFilter);
			$('#Content').click(hideFilter);
			
			$('#closeButton').unbind('click', hideFilter);
			$('#closeButton').click(hideFilter);
			
			$('#slider').unbind('click', hideFilter);
			$('#slider').click(hideFilter);
			


		});
		$('#filter_background').animate({width:"300px"}, 700);
	}
	


	$('#filter_contents').fadeIn(700);
}

function hideFilter() {
	$('#Content').unbind('click', hideFilter);
	$('#closeButton').unbind('click', hideFilter);
	$('#slider').unbind('click', hideFilter);

	
	if($('#filterOverlay').hasClass('CategoryMenuOpen')) {
		$('#filterOverlay').removeClass('CategoryMenuOpen');
		
		$('#filterOverlay').animate({width:"0px"}, 700);
		$('#filter_background').animate({width:"0px"}, 700);
		$('#filter_contents').stop(); // stop possible fadein animation from showTransparent()
		$('#filter_contents').fadeOut(700);
	}
}


/**

 */
var galleryScroller=null;
function initializeGalleryScroller() {
	if(galleryScroller!=null) galleryScroller.stop();
	
	var carousel=$("#carousel");
	galleryScroller=new Scroller(carousel, {
		area: 50,
		velocity: 0.2,
		attachEvent: "mouseenter",
		detachEvent: "mouseleave"
	});
	galleryScroller.start();
	
	Scroller.setListSize(carousel);
	listPositionFeedback(carousel, showPositionInGallery);
	listHoverFadein(carousel);
}

function initializeProductListScrollBar() {
	var productList=$("#ProductList");
	
	listPositionFeedback(productList, showPositionInProductList);
	
	var initialize=$("#ProductListScrollBar")[0].resizeScrollBar==undefined;
	if(initialize) {
		buildScrollPane(productList, $("#ProductListScrollBar"));
	}
	else {
		$("#ProductListScrollBar")[0].resizeScrollBar();
		$("#ProductListScrollBar")[0].updateScrollBar();
	}
}

function initializeColorScrollBar(cornerbg) {




	var initialize=$("#ColorSelectorScrollBar")[0].resizeScrollBar==undefined;
	if(!initialize) return;
	
	var color=$("#ColorSelector");
	colorListPositionFeedback(color, showPositionInColor);
	
	buildScrollPane(color, $("#ColorSelectorScrollBar"));
	
	$('#ColorSelectorScrollBar .ui-slider-range').cornerz({radius:5, background: cornerbg, corners: 'tl tr br bl'});
}

function listPositionFeedback(element, callback) {
	var list=$('ul:last', element);
	var li=list.children('li');

	var self = this;
	if (li.size() > 0) {
		var i=0;
		var size=li.size();
		li.each(function() {
			i++;
			this.listPosition=i+"/"+size;
			$(this).mouseenter(callback);
		});

		callback.call(li.get(0));
	}
}

function colorListPositionFeedback(element, callback) {
	var list=$('div', element);

	var self = this;
	if (list.size() > 0) {
		var i=0;
		var size=list.size();
		list.each(function() {
			i++;
			this.listPosition=i+"/"+size;
			$(this).mouseenter(callback);
		});

		callback.call(list.get(0));
	}
}

function showPositionInGallery() {
	$('.showPositionGallery').text(this.listPosition);
}

function showPositionInProductList() {
	$('.showPositionProductList').text(this.listPosition);
}

function showPositionInColor() {
	$('.showPositionColor').text(this.listPosition);
}

function listHoverFadein(element, callback) {
	var span=$('li>a>span', element);

	span.hover(
		function() {
			$(this).stop(true).fadeTo('fast', 1);
		},
		function(){
			$(this).fadeTo('fast', 0.8);
		}
	);
}

function initializeSlider() {
	$("#slider").slider({
		animate: true,
		range: true,
		min: 0,
		max: 8,
		values: [0, 8],
		start: function(event, ui) {





			var this_slider=$(this).data("slider");
			this_slider.moveBothHandles=!$(event.originalEvent.target).is(".ui-slider-handle");
			

			if(!this_slider.super_slide) {
				this_slider.super_slide=this_slider._slide;
				
				this_slider._slide=function(event, index, newVal) {
					if(!this.moveBothHandles) {
						this.super_slide(event, index, newVal);
						return;
					}
					var position = { x: event.pageX, y: event.pageY };

					newVal=this._leftValueFromMouse(position);
					this.values([newVal, newVal+this.options.step]);
				};


				this_slider._leftValueFromMouse=function(position) {
					var pixelTotal, pixelMouse;
					if ('horizontal' == this.orientation) {
						pixelTotal = this.elementSize.width;
						pixelMouse = position.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0);
					} else {
						pixelTotal = this.elementSize.height;
						pixelMouse = position.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0);
					}
	
					var percentMouse = (pixelMouse / pixelTotal);
					if (percentMouse > 1) percentMouse = 1;
					if (percentMouse < 0) percentMouse = 0;
					if ('vertical' == this.orientation)
						percentMouse = 1 - percentMouse;
	
					var valueTotal = this._valueMax() - this._valueMin(),
						valueMouse = percentMouse * valueTotal,
						valueMouseModStep = valueMouse % this.options.step,
						normValue = this._valueMin() + valueMouse - valueMouseModStep;
	


					if(normValue>=this._valueMax())
						normValue -=this.options.step;
	


					return parseFloat(normValue.toFixed(5));
				};
			}
		},
		slide: function(event, ui) {

			if(ui.values[0]==ui.values[1]) return false;
			return true;
		},
		change: function(event, ui) {
			var this_slider=$(this).data("slider");
			if(this_slider.noPropagation==true || this_slider.noPropagation==ui.handle) return;
			

			$(".ui-slider-range", this).queue(function () {
				onIntensitySlider(ui.values[0], ui.values[1]);
				$(this).dequeue();
			});
		}
	});
	

	$("#slider .ui-slider-handle").each(function(i) { $(this).addClass("handle"+i); });
	
	refreshSliderValues();
	
	$("#resetButton>a").click(function() {
		var s=$("#slider");
		setSliderValues(s, [s.slider("option", "min"), s.slider("option", "max")], true, false);
	});
}

/**

 */
function refreshSliderValues(animated) {
	var s=$("#slider");
	
	var intensity=$("#intensity>li");
	setSliderValues(s, [(intensity.length>0 ? parseInt(intensity[0].innerHTML) : s.slider("option", "min")),
			(intensity.length>1 ? parseInt(intensity[1].innerHTML) : s.slider("option", "max"))], animated, true);
}

/**






 */
function setSliderValues(s, newValues, animated, noPropagation) {



	var this_slider=$(s).data("slider");
	
	var old_animateOff=this_slider._animateOff;
	if(!animated) this_slider._animateOff=!animated;
	
	var old_np=this_slider.noPropagation;
	if(noPropagation) this_slider.noPropagation=noPropagation;
	else this_slider.noPropagation=this_slider.handles[0];
	
	s.slider("values", newValues);
	
	this_slider._animateOff=old_animateOff
	this_slider.noPropagation=old_np;
}

