// JavaScript Document

/* -----------------------------------------------------------------------------
 * DOM-Ready Calls
 * ---------------------------------------------------------------------------*/

$(document).ready(function(){
	
	// Append active to linkbar image
	$('img.activate').imgAppendix('_active');
	
	// Höhe der Infobox dynamisch an Größe des rechten Textbereiches anpassen
	levelHeight('#div_23_right_2', 'div.div_3_1_newslist div.scroll', '.div_3_1_newslist h2');
	
	// Clear Formfield
	$("input.cleardefault").clearInput();
	
	// Inputfeld mit Endung  
	$("input.stf_input_hasending").focus(function(){
		$(this).parent().siblings('.stf_r').attr({'src':'kit/bo_stud_form_input_right_active.png'});
	}).blur(function(){
		$(this).parent().siblings('.stf_r').attr({'src':'kit/bo_stud_form_input_right.png'});
	});

	// Suchfeld Produktsuche
	var preFocusCenter =  'kit/bo_stud_form_input_cent.gif';
	$("input.stf_input").focus(function(){
		$(this)
			.css({'background' : 'url("kit/bo_stud_form_input_left_active.gif") no-repeat left 0'})
			.parent().css('background-image', 'url("kit/bo_stud_form_input_cent_active.gif")')
		if( this.value == this.defaultValue ) {
			this.value = "";
		}
	}).blur(function(){
		$(this)
		.css({'background' : 'none'})
		.parent().css({'background-image' : 'url("kit/bo_stud_form_input_cent.gif")' })
		if( !this.value.length ) {
			this.value = this.defaultValue;
		}		
	});
	
	// Dies initialisiert das Bilderfading
	if(jQuery().innerfade) {
		$('ul#imagefader').innerfade({
			speed: 3000,
			timeout: 5000,
			type: 'sequence',
			containerheight: '508px'
		});
	} 	
	
	// Katalogbild Vorschau im TB-Bereich
	$('table.bo_katalog_liste img.jq_kat_pic').hover(function(){
		var katPic = $(this).attr('src');
		var katName = $(this).parent().parent().find('.jq_kat_name').html();
		document.getElementById('div_23_right_1').innerHTML = '<div class="kat_tb_pic"><img src="'+katPic+'" alt="" /></div><div class="kat_tb_name">'+katName+'</div>';
//		$('#div_23_right_1').removeClass('bgverlauf').addClass('darkgrade');
	});
	
	
	// Image Hover
	$('.imghover').hover(function(){
		$(this).addClass('hover');
		$(this).find('div').addClass('hover');
	}, function() {
		$(this).removeClass('hover');
		$(this).find('div').removeClass('hover');
	});
	
	
	// IE6 Detection
	if ($.browser.msie && $.browser.version.substr(0,1)<7) {
	$.get('functions/browserupdate/update_alert_html.html',function(data){
		$(data).slideDown('fast').prependTo('#orbit');
		}); 
	}

	// Press MultiSelectFields
	$(msf.settings.formSelector).change(function(){
		$(this).parent().nextAll().find('select').empty();
		var optId = $(this).val();
		var selFldId = $(this).attr('id');	// CSS-ID of changed Select-Field
		var optConstr = $(this).find('option:selected').attr('alt');	// Value of html-attribute "alt" (for DB-comparison)
		var optConstrFld1 = $(this).parent().parent().find("select option:selected").eq(0).attr('alt');
		var optConstrFld2 = $(this).parent().parent().find("select option:selected").eq(1).attr('alt');
		var optConstrFld3 = $(this).parent().parent().find("select option:selected").eq(2).attr('alt');
		
		var fldNr = selFldId.slice(-1); // Field-Nr. affected by change
		var dataSet = optConstrFld1;
		var clang = $(document).getUrlParam("clang");
//		alert(optId);
//		alert(cssId);
		$.ajax({ 
			type: "POST",
			url: msf.settings.files.ajxFile,
			dataType: "json",
			data: "msfId="+optId+"&fldNr="+fldNr+"&dataSet="+dataSet+"&optConstr="+optConstr+"&optConstrFld1="+optConstrFld1+"&optConstrFld2="+optConstrFld2+"&optConstrFld3="+optConstrFld3+"&clang="+clang,
			success: function(jsonData){
				result = eval(jsonData);
				msf.result = result.options;
				tbl.result = result.table; 
			},
			complete : function(){
				if(fldNr < msf.settings.fieldCount) msf.fireMsf(optId, selFldId);
				if(fldNr != 1) tbl.makeTbl(); // No table on change of Field1
			},
			error: function(a,b,c){
				alert('Ajax-Error: '+a+', '+b+', '+c);
			}
		});
	});	
	
	// Pressematerial Auswahlfelder und Ausgabe -----------------------------
	//TODO: Altes löschen, wenn neues erfolgreich am Laufen
//	var choices = new Array();
//	function presseSelectFields(field, choice) {
//		
//		var ajxFile = "functions/multiselectfields/multiSelectFields_ajx.php";
//		var target = field+1;
//		var clang = $(document).getUrlParam("clang");
//		// Starte Ajax-Request
//		$.ajax({ 
//			type: "POST",
//			url: ajxFile,
//			data: "clang=" + clang + "&ajx=1&field=" + field + "&choice=" + choice + "&choices[]=" + choices + "&target=" + target,
//			success: function(phpData){
//				document.getElementById('form_presse_'+target).innerHTML = phpData;
//			}
//		});
//	}
//
//	function makePressTable(field, choice, choice1, choice2, choice3) {
//
//		var loaderTarget = 'textbox';
//		var ajxFile = "functions/multiselectfields/multiSelectFields_ajx.php";
//		
//		var clang = $(document).getUrlParam("clang");
//		
//		if(field == 1){
//			var catName = choice;
//		}
//		if(field == 2){
//			var typeName = choice;
//			var catName = choice1;
//		}
//		if(field == 3){
//			var typeName = choice2;
//			var catName = choice1;
//		}
//		$('#textbox').empty();
//		$('#'+loaderTarget).addClass('loading');		
//			$.ajax({ 
//				type: "POST",
//				url: ajxFile,
//				data: "clang=" + clang + "&ajx=2&catname="+catName+"&typename="+typeName,
//				success: function(phpData){
//				document.getElementById('textbox').innerHTML = phpData;
//				$('#'+loaderTarget).removeClass("loading");
//			}
//			});
//	}
//	
//	$("form#form_presse select").change(function(){
//		
//		var field = $(this).attr('id').slice(-1);
//		var field = parseInt(field);
//		
////		var choice = $(this).val();
////		var choice1 = $(this).parent().parent().find("select").eq(0).val();
////		var choice2 = $(this).parent().parent().find("select").eq(1).val();
////		var choice3 = $(this).parent().parent().find("select").eq(2).val();
//		var choice = $(this).find("option:selected").attr('opf_press');
//		var choice1 = $(this).parent().parent().find("select option:selected").eq(0).attr('opf_press');
//		var choice2 = $(this).parent().parent().find("select option:selected").eq(1).attr('opf_press');
//		var choice3 = $(this).parent().parent().find("select option:selected").eq(2).attr('opf_press');
////		alert(choice + '<br>' + choice1 + '<br>' + choice2 + '<br>' + choice3);
//		choices[field] = choice;
//		presseSelectFields(field, choice);
//		makePressTable(field, choice, choice1, choice2, choice3);
//		// Remove selection of succeeding select fields
////		$(this).parent().nextAll().find('option:selected').removeAttr("selected");
//		// Emtpy Fields succeeding on targetfield (click field 1 -> empty field 3)
//		$(this).parent().nextAll().find('select').empty();
//	});
		
	// Custom Variables
	var ajaxErrorMsg = "Please inform the administrator if this problem replicates<br />Bitte informieren Sie den Administrator, wenn das Problem wiederholt auftritt.";


	// Produkt-Details laden (Varianten)(live) ---------------------------------	
	$("#prod_det_var a.variant").live("click", function(e){
		e.preventDefault();
		$("#det_loader").addClass("loading");
		var ajxFile2 = "functions/products/ajax/stu_products_process_var2.php";
		
		// Extrahiere Daten aus Markup
		var detart_id = $(this).getUrlParam("article_id");
		var popup_art = "288"; 
		var clang = $(this).getUrlParam("clang");
		var cat_id = $(this).getUrlParam("cat_id");
		var model_id = $(this).getUrlParam("model_id");
		var type_id = $(this).getUrlParam("type_id");
		var variant_id = $(this).getUrlParam("variant_id");
		
		// Zu übergebendes Json-Objekt (Alle Parameter müssen als Variable definiert sein!)
		var jsonData = {
				"detart_id" : detart_id,
				"popup_art" : popup_art,
				"clang" : clang,
				"cat_id" : cat_id, 
				"model_id" : model_id, 
				"type_id" : type_id, 
				"variant_id" : variant_id 
				};
		// Starte Ajax-Request
		$.ajax({
			type: "POST",
			url: ajxFile2,
			dataType: "json", // Typ der Rückgabedaten
			data: jsonData,
			error: function(a,b,c) {
				document.getElementById('detail_container').innerHTML = "<strong>XMLHttpRequest-Error:</strong><br />"+a+"<br />"+b+"<br />"+c+"<br /><br />"+ajaxErrorMsg;
			},
			success: function(phpData2){
				document.getElementById('prod_det_descr').innerHTML = phpData2.detail.descr;
				document.getElementById('prod_det_pic_big').innerHTML = phpData2.detail.picbig;
				document.getElementById('prod_det_var').innerHTML = phpData2.variants;
				document.getElementById('detail_loupe').innerHTML = phpData2.detail.det_icon;
				
				$('#det_loader').removeClass("loading");
			}
		});
		//return false;		
	});

	
	// Produkt-Details laden (aus Carousel) ---------------------------------	
	$("#mycarousel a").click(function(e){
	    e.preventDefault();
		$('#det_loader').addClass('loading');
		var ajxFile = "functions/products/ajax/stu_products_process.php";
		// Extrahiere Daten aus Markup
		var detart_id = $(this).getUrlParam("article_id");		
		var clang = $(this).getUrlParam("clang");
		var cat_id = $(this).getUrlParam("cat_id");
		var model_id = $(this).getUrlParam("model_id");
		var type_id = $(this).getUrlParam("type_id");
		var variant_id = $(this).getUrlParam("variant_id");
		// Starte Ajax-Request
		$.ajax({
			type: "POST",
			url: ajxFile,
			data: "clang=" + clang + "&cat_id=" + cat_id + "&model_id=" + model_id + "&type_id=" + type_id + "&variant_id=" + variant_id + "&detart_id=" + detart_id,
			error: function(a,b,c) {
				document.getElementById('detail_container').innerHTML = "<strong>XMLHttpRequest-Error:</strong><br />"+a+"<br />"+b+"<br />"+c+"<br /><br />"+ajaxErrorMsg;
			},
			success: function(phpData){
				document.getElementById('detail_container').innerHTML = phpData;
				$('#det_loader').removeClass("loading");
			}
		});
	//	return false;
	});
	
	
	// Aufruf für JQZoom
		// if(jQuery().jqzoom) {
		//	var options = {
		//		    zoomWidth: 275,
		//		    zoomHeight: 346,
		//            xOffset: 0,
		//            yOffset: 0,
		//            title: false,
		//            position: "fixed", // only with jQzoom individual, depends on definition of "zoomContainerId"
		//            zoomContainerId: 'div_23_right_1'
		//	};
		//		$('.zoom').jqzoom(options);		
		// }
	
	// Hover für Produktvarianten
	$('#mycarousel li').hover(function(){
		$(this).find('dt, dd').addClass('hervor');
	}, function() {
		$(this).find('dt, dd').removeClass('hervor');
	});
	

	
	/*
	 * jCarousel init --------------------------
	 */ 
	if(jQuery().jcarousel) {
		$('#mycarousel').jcarousel({
			scroll: 4,
			auto: 0,
			wrap: 'last'
				,
			initCallback: mycarousel_initCallback
		});
	}
		function mycarousel_initCallback(carousel) {
		    // Disable autoscrolling if the user clicks the prev or next button.
		    carousel.buttonNext.bind('click', function() {
		        carousel.startAuto(0);
		    });
	
		    carousel.buttonPrev.bind('click', function() {
		        carousel.startAuto(0);
		    });
	
		    // Pause autoscrolling if the user moves with the cursor over the clip.
		    carousel.clip.hover(function() {
		        carousel.stopAuto();
		    }, function() {
		        carousel.startAuto();
		    });
		};	
		

		
		
	// PNG-Fix for jQuery
	if(jQuery().supersleight) {
		if (jQuery.browser.msie && parseInt(jQuery.browser.version) < 7 && parseInt(jQuery.browser.version) > 4) {	
			$('body').supersleight({shim: 'kit/trans.gif'});
		};
	}

	// Fade-in, sequentiell
		$('.fadein').hide();		
		var intTime = 0;
		$('.fadein').each(function(i){
			var _this = this;
			window.setTimeout(function(){$(_this).fadeIn('100');}, intTime);
			intTime += 250;
		});
	
	
	// Translation in Progress
		$('.lang_list li').hover(function(){
			if($(this).find('a').length == 0 ) {
				$(this).addClass('curs_default');
				$('.lang_inactive').hide().fadeIn(150);
			}
		}, function() {
				$('.lang_inactive').hide();
		});

	// TL History Hover
		var clang = $(document).getUrlParam("clang");			
		function tdClass(that) {
			currRow = $(that).parent().attr("class");
			var index = $("."+currRow+" td").index(that)+1;
			$(".tl_history table").find('td').filter(':nth-child(' + (index) + ')').toggleClass('active');
		}
		
		function yearPosition(lang, text, year) {
			(lang == 3) ? sufTxt = text : sufTxt = '';
			(lang != 3) ? preTxt = text+' ' : preTxt = '';
			return preTxt+year+sufTxt;
		}
		
		$(".tl_history td a").click(function (e) {
			e.preventDefault();
		});
		$(".tl_history td").hover(function () {
			tdClass(this);
			var year = $(this).attr("year");
			var out = '';
			$.getJSON("functions/bo_studio_history.json", function(json){
		 		$.each(json[clang][year].text, function() {
	 				out += '<li>'+this+'</li>';
		 		});		
		 		var langData = json["langData"][clang]["theYear"];
		 		document.getElementById('textbox').innerHTML = '<h1>'+yearPosition(clang, langData, year)+'</h1><ul>'+out+'</ul>';
//		 		document.getElementById('textbox').innerHTML = '<h1>'+langData+' '+year+'</h1><ul>'+out+'</ul>';
			});		
		}, function () {
				tdClass(this) ;
			}
		);

	
		// Tabellen Durchsuchbarkeit
//		$("table.enableSearch").searchable();
		
		
		// Eigene Scrollbalken jScrollPane 
//		$('.scroll').jScrollPane({
//			showArrows:true, 
//			scrollbarWidth:12, 
//			scrollbarMargin:0
//		});
		
	// TBGal: Show-Image in TB-Bereich (z.B. für Manufaktur Fotogalerie)

		function showTb(srcCls, trgtId){
		
			$('.'+srcCls+' img').hoverIntent({
				sensitivity: 7, 
				interval: 50, 
				over: hideTb, 
				timeout: 0, 
				out: showTb
			});			
			function hideTb(){  $('#'+trgtId).find('img').hide().end().addClass('loading');}
			function showTb(){ $('#'+trgtId).find('img').show();}
			
//			$('.'+srcCls+' img').hover(function () {
//				$('#'+trgtId).find('img').hide().end().addClass('loading');
//			}, function(){
//				$('#'+trgtId).find('img').show();				
//			});

			$('.'+srcCls+' a').hoverIntent(function () {
				var imgFile = $(this).attr('href').substr(8);
				var imgW = 676;
				var imgH = 346;
//				document.getElementById(trgtId).innerHTML = '<img width="'+imgW+'" height="'+imgH+'" alt="" src="index.php?rex_resize='+imgW+'c__'+imgH+'h__'+imgFile+'"/>';
				$('#'+trgtId).removeClass("loading")
				.html('<img width="'+imgW+'" height="'+imgH+'" alt="" src="index.php?rex_resize='+imgW+'c__'+imgH+'h__'+imgFile+'"/>').find('img').hide().fadeIn(1000);
			},
			function(){
			});
		};
		showTb('tbgal','div_23_right_1');		

	
	// Dealer Dropdown Navigation ----------------------------

		$('input.submit_button').hide();
//		$('#cities').attr({ disabled: "disabled"});

		
		// TODO: Initial fill of City field. Like: if($('select#lands').length){ // fill cities }

		
		$("select#lands").change(function(){
			selectDealerLand(this);
		});
		
		$("select#cities").change(function(){
	
			var ajxFile = "functions/dealers/dealDropProcess.php";
			var city = $(this).val();
			var country = $('#lands').val(); 

			var clang = $(document).getUrlParam("clang");			
			
			// Load Dealer Table by City
			$.ajax({
				type: "POST",
				url: ajxFile,
				data: "clang=" + clang + "&selCity="+city+"&selCountry="+country+"&selType=city",
				success: function(phpData){
					document.getElementById('textbox').innerHTML = phpData;
				}
			});
		});	
		
	// ENDE Dealer Dropdown Navigation ENDE ----------------------------
	
}); // Document-Ready ENDE

/* -----------------------------------------------------------------------------
 * On Window Load (dom, js, css, img's)
 * ---------------------------------------------------------------------------*/

$(window).bind('load', function() {
	
	// Trigger Preloader
	preloadImgs("img.activate",	"_active", 
			["kit/gallery_logo_200_active.png"
			 ,"kit/bo_stud_form_input_cent_active.gif"
			 ,"kit/bo_stud_form_input_right_active.png"
			 ,"kit/bo_stud_form_input_left_active.gif"
			 ]
	);
}); // Window-Ready ENDE


/* -----------------------------------------------------------------------------
 * Plugins, Funktionen, Klassen, Methoden
 * ---------------------------------------------------------------------------*/

/*
 * ClearInput 
 * ----------
 * Clears Inpuft Formfield on focus
 * Use: $('#bla').clearInput();
 */

$.fn.clearInput = function() {
	return this.focus(function() {
		if (this.value == this.defaultValue) {
			this.value = "";
		}
	}).blur(function() {
		if (!this.value.length) {
			this.value = this.defaultValue;
		}
	});
};




/*
 * IMG Preloader
 * -------------
 * Parameter:
 * - sel: Image selector f.e.: img.activate or img.preload
 * - appendix: for automatic preloading of hover-files f.e.: "_active"
 * - manList: Manual Array of img-paths to be preoloaded
 */ 
function preloadImgs(sel, appendix, manList) {
		var preload = new Array();
	$(sel).each(function() {
		s = $(this).attr("src").replace(/\.(.+)$/i, appendix+".$1");
		preload.push(s);
	});
	
	for (key in manList){
		preload.push(manList[key]);
	}
		var img = document.createElement('img');
		$(img).bind('load', function() {
			if (preload[0]) {
				this.src = preload.shift();
			}
		}).trigger('load');
}

/*
 *  IMG mittels Apendix "aktivieren"
 *  --------------------------------
 *  Diese Funktion in Kombin. mit preloadImgs() verwenden 
 *  um doe Bilder mit dem appendix "_activate" vorzuladen. 
 *  Also: preloadImgs("img.activate", "_active", manualArray);
 */
$.fn.imgAppendix = function(appendix){
	
	var filename = $(this).attr('src');
        
	$(this).hover(function(){
		$(this).attr({'src' : appendToImg()});
	}, function(){
		$(this).attr('src', function(){
			return this.src.replace(appendix, '');
		});
	});
	
	function appendToImg() {
		var ext = /[^.]+$/.exec(filename);
		var fname = filename.substring(0,filename.lastIndexOf("."));
        return fname+appendix+'.'+ext;
	}
};


/*
 * Presse-Klasse mit Methoden
 */
	var msf = new msfClass();
	var tbl = new tblClass();
	
	/*
	 * MultiSelectFields Class - Navigation in MSF
	 */
	function msfClass() {
		// Properties 
		this.result = '';
		
		// Construct
		this.settings = {
				"formSelector" : "form#form_presse select", 
				"fieldCount" : 3,
				"fields" : {
					1 : {
						"sel" : "select#form_presse_1",
						"cssId" : "form_presse_1"
					},
					2 : {
						"sel" : "select#form_presse_2",
						"cssId" : "form_presse_2"
					},
					3 : {
						"sel" : "select#form_presse_3",
						"cssId" : "form_presse_3"
					}
				},
				"files" : {
					"ajxFile" : "functions/multiselectfields/multiSelectFields_ajx.php"
				}
		};
		
		//Methods
		this.fireMsf = function(fieldId, sel){
			// Field: opt-value z.B. 11
			// sel: css-id z.B. form_presse_1
			// console.info("\n FireMsf \n fieldId: "+fieldId+"\n sel: "+sel);
			var idx = Number(sel.slice(-1));
			if(idx < this.settings.fieldCount){
				this.fillField(this.settings.fields[idx+1].cssId, this.result);
			}
		};
		
		this.fillField = function(field, opts) {
			$('#'+field).html(opts);
//			document.getElementById(field).innerHTML = opts;
		};
	
	} // msfClass() END
	
	/*
	 * PressClass - Generates HTML-Table with Pressdata
	 */
	function tblClass() {
		// Properties 
		this.result = '';
		this.settings = {
				"tableDivCssId" : "textbox"
		};
	
		//Methods
		this.makeTbl = function() {
			if(this.result)
				document.getElementById(this.settings.tableDivCssId).innerHTML = this.result;
		};
		
	} // pressClass() END
	



// Höhe eines Elementes an die eines anderen anpassen abzgl. eines Elementes
//z.B. für die Anpassung der Infoboxhöhe an den Textbereich
function levelHeight(srcSel, trgtSel, subtrSel){
 var rightHeight = $(srcSel).height();
 var leftHeadHeight = $(subtrSel).height();
 var leftScrollHeight = rightHeight - leftHeadHeight;
 $(trgtSel).height(leftScrollHeight);
}


// Dealerfunktion
function selectDealerLand(land){
	
	var loaderTarget = 'div_23_right_2';
	var ajxFile = "functions/dealers/dealDropProcess.php";
	var country = $(land).val();
	
	var clang = $(document).getUrlParam("clang");			
	
	
	if (country == 'alle') {
		$('#cities').attr({
			disabled: "disabled"
		});
		$('#textbox').html("Bitte Land wählen.<br/>Please choose country.");
	} else {
	
		$('#textbox').empty();
		$('#'+loaderTarget).addClass('loading');

		// Starte Ajax-Request
		$.ajax({ // Fill Dropdown City
			type: "POST",
			url: ajxFile,
			data: "clang=" + clang + "&selCountry=" + country + "&selCity=alle&selType=land",
			success: function(phpData){
				//		document.getElementById('cities').innerHTML = phpData;
				$('#cities').html(phpData);
				if (country != 'alle') 
					$('#cities').removeAttr("disabled");
			}
		});
		
		$.ajax({ // Load Dealer-Table
			type: "POST",
			url: ajxFile,
			data: "clang=" + clang + "&selCountry=" + country + "&selCity=alle&selType=city",
			success: function(phpData){
				document.getElementById('textbox').innerHTML = phpData;
				$('#' + loaderTarget).removeClass("loading");
			}
		});
		
		$.ajax({ // Load Agency
			type: "POST",
			url: ajxFile,
			data: "clang=" + clang + "&selCountry=" + country + "&selCity=alle&selType=agency",
			success: function(phpData){
				document.getElementById('dealer_det').innerHTML = phpData;
			}
		});
	}
}


	
