/*
 * File........: search.js
 * Created.....: 2004/12/30
 * Copyright...: (c) 2005 All Rights Reserved.
 */

audi_ngw.namespace(audi_ngw,'vtp.search');

function rSel(tab,tab2,tab3)
{
  if(!bWait){
	bWait = true;
	var url=vtpUrl+"&tab="+tab+"&idx=-1";
	if(tab2)	url+="&tab2="+tab2;
	if(tab3)	url+="&tab3="+tab3;
	ajaxSearch(url);
  } else
  { bWait = false; }
}

// Fahrzeugsuche nach Postleitzahl und Umkreis
function doDSearch(obj, setDist)
{
  if(!bWait)
  {
   if (typeof obj != "object") return;
   if (obj.name=='UkCity')
   {
     if (document.p.City.value == obj.value) return;
     document.p.City.value = obj.value;
     if (obj.value!="")
     {
    	 $("#errorPlz").attr("style","display: none");
//         document.p.Distance.value = "-1";
		 if(document.s.UkDist.selectedIndex == 0 && setDist) {
        	 document.s.UkDist.selectedIndex = 1;	// set 10 km
        	 document.p.Distance.value = document.s.UkDist.options[document.s.UkDist.selectedIndex].value;
         }
         else
        	 if(document.s.UkDist.selectedIndex == 0 && !setDist)
        		 return; // document.s.UkDist.selectedIndex = 0;
     }
   }   
   if (obj.name=='UkPLZ')
   {
     if (document.p.PostCode.value == obj.value) return;
     if (obj.value!="")
     {   
    	 $("#errorPlz").attr("style","display: none");
//         document.p.Distance.value = "-2";
         if(document.s.UkDist.selectedIndex == 0 && setDist) {
        	 document.s.UkDist.selectedIndex = 1;	// set 10 km
        	 document.p.Distance.value = document.s.UkDist.options[document.s.UkDist.selectedIndex].value;
         }
         else {
        	 if(document.s.UkDist.selectedIndex == 0 && !setDist) {
        		 document.p.PostCode.value = obj.value;
        		 return; // document.s.UkDist.selectedIndex = 0;
        	 }
         }
     }
     if(obj.value.length > 0 && (obj.value.length!=5 || isNaN(obj.value))){
    	 obj.value=document.p.PostCode.value;
   		 $("#errorPlz").attr("style","display: block;margin-top:10px;margin-bottom:10px;");
         return;
     }    	 
     document.p.PostCode.value = obj.value;
   }
   if (obj.name=='UkDist')
   {
     document.p.Distance.value = obj.options[obj.selectedIndex].value;
     if (document.p.PostCode.value=="" && document.p.City.value=="") return;
     if (document.p.Distance.value=="-1"){
    	 document.p.City.value=="";
    	 document.p.PostCode.value=="";
     }
   }   
	document.p.tab.value="dist";
	showWait();
	if (document.p.act.value == 'list' && document.p.selfAction) {
		document.p.selfAction.value = "search";
	}
		document.p.submit();
 } else
 { alert(sWait); bWait = false; }
}

function showResultList() {
  //wenn Umkreissuche noetig, dann ausfuehren
  if (document.p.Distance && document.p.Distance.value == "-2") { //PLZ wurde geaendert
  
     document.p.tab.value="dist2";
     //document.p.submit(); //kein submit wenn button submit definiert
  }  
  else {
	  if(document.p.selfAction)
		  document.p.selfAction.value = "search";
	  document.p.act.value = 'list';
	  document.p.v.value = 0;
	  document.p.submit();
  }
  showWait();
}

var busyTimer = null;
function showWaitImg() {
	if(bWait) {
		var content_wrapper_height = $("#audi_content_wrapper").height();
		$('#busy_overlay').css({"height":content_wrapper_height})
	      				  .show();
		if (jQuery.browser.msie === true && parseFloat(jQuery.browser.version) < 6.5 )
			$(":input").attr("disabled","disabled");
//		setTimeout( function() {
//			if(bWait) {
				$('#vtp_preloader').css({"top":content_wrapper_height/2})
							       .show();	// fadeIn(500);
//			}
//		},100);
		busyTimer = setTimeout( function() {
			$('#vtp_preloader').hide();
			$('#busy_overlay').hide();
			$(":input").removeAttr("disabled");
			bWait = false;
			busyTimer = audi_ngw.clearTimer(busyTimer);
		},60000);
//			}
	}
}

function showWait() {
	bWait = true;
	setTimeout("showWaitImg()",100);
}

function chkSubmit() {
	return document.s.paramtransfer.value=="1";
}

function flagListe() {
	var stat = getViewStat();
	var flags = 0;
	for (var i=stat.length-1;i>=0;i--) {
		flags <<= 1;
		if(stat.charAt(i)=='1')
			flags |= 1;
	}
	return flags;
}
function markTab(href) {
	var now = + new Date();
	document.images.dummybild.src = href + "&ts=" + now;
	return false;
}

function selTab(obj)
{
 if(!bWait)
 {
	var selValue = obj.options[obj.selectedIndex].value;
	bWait = true;
	var tab = obj.name;
	
	//wenn der Standort mit M beginnt, ist es der Hauptstandort
	//'M' entfernen und den Tab 't_partner' waehlen
	if(tab == "t_location" && selValue.charAt(0) == 'M') {
		tab = "t_partner";
		selValue = selValue.substring(1);
	}
	//wenn die Farbe mit G beginnt, ist es eine Grundfarbe
	//'G' entfernen und den Tab 't_color' waehlen
	if(tab == "t_colorm" && selValue.charAt(0) == 'G') {
		tab = "t_color";
		selValue = selValue.substring(1);
	}
	if(tab == "t_colorm" && selValue == "-1") {
		ajaxSearch(vtpUrl+"&tab="+tab+"&tab2=t_color&idx="+selValue);
	}
	if(tab == "t_intcolorm" && selValue.charAt(0) == 'G') {
		tab = "t_intcolor";
		selValue = selValue.substring(1);
	}
	if(tab == "t_intcolorm" && selValue == "-1") {
		ajaxSearch(vtpUrl+"&tab="+tab+"&tab2=t_intcolor&idx="+selValue);
	}
	if(tab == "t_manuf" && selValue == -1) {
		ajaxSearch(vtpUrl+"&tab="+tab+"&tab2=t_model&tab3=t_smod&idx="+selValue);
	} else if(tab == "t_model" && selValue == -1) {
		ajaxSearch(vtpUrl+"&tab="+tab+"&tab2=t_smod&idx="+selValue);
	} else if(tab == "t_location" && selValue == "-1") {
		//zuruecksetzen von t_location & t_partner
		ajaxSearch(vtpUrl+"&tab="+tab+"&idx="+selValue);
	} else {
		ajaxSearch(vtpUrl+"&tab="+tab+"&idx="+selValue);
	}
	audi_ngw.vtp.statistic.vtpTrack(s,"doSearch");
 } else
 { bWait = false; }
}

function selLocation(obj) {
	if(!bWait) {
		var selValue = obj.options[obj.selectedIndex].value;
		bWait = true;
		var tab = obj.name;

		//wenn der Standort mit M beginnt, ist es der Hauptstandort
		//'M' entfernen und den Tab 't_partner' waehlen
		if (tab == "t_location" && selValue.charAt(0) == 'M') {
			tab = "t_partner";
			selValue = selValue.substring(1);
		}

		if (tab == "t_location" && selValue == "-1") {
			ajaxSearch(vtpUrl+"&tab="+tab+"&idx="+selValue);
		} else {
			ajaxSearch(vtpUrl+"&tab="+tab+"&idx="+selValue);
		}

		audi_ngw.vtp.statistic.vtpTrack(s,"doSearch");
	} else {
		bWait = false;
	}
}


function selCheck(obj)
{
 if(!bWait)
 {
	bWait = true;
	ajaxSearch(vtpUrl+"&tab="+obj.name+"&idx="+obj.value);
	audi_ngw.vtp.statistic.vtpTrack(s,"doSearch");
 } else
 { bWait = false; }
}
function selUpdate(tables)
{
	if(!tables)
		return;
	bWait=false;
	busyTimer = audi_ngw.clearTimer(busyTimer);
	$('#vtp_preloader').hide();
	$('#busy_overlay').hide();
	$(":input").removeAttr("disabled");
	for(var ixTab=0; ixTab < tables.length; ixTab++){
	  if(tables[ixTab].num){
		var num = tables[ixTab].num;
		var result = $('#vtp_num');
		var ergebnis = result.metadata();
		
		if($('.sidesearch').is('div') && parseInt(num.replace(/[\s,\.]/,'')) != numCurrentResult) {
			$('.grey').removeClass('grey').bind('click',function(){showResultList();}).addClass('red');
		}
		result.val(num + " " + ((num == "1") ? ergebnis.one : ergebnis.more));
	  } else {
		setTabJSON(tables[ixTab]);
		fillCurrentSelection(tables[ixTab]);
	  }
	}
	if(oneSelected) {
		oneSelected = false;
		if(!onlyAudi)
			ajaxSearch(vtpUrl+"&tab=t_manuf&idx=AA");
	}
	else
		onlyAudi = false;
	setTimeout("updateNumSelected()", 50);
}
function updateNumSelected() {
	$('.num_equip').each( function(ixTab) {
		var num = 0;
		var allIn = $(this).find(':input');
		allIn.each(	function (ix) {
			var ele = allIn[ix];
			if(ele.options) {
				var len = ele.options.length;
				for(var i = 0; i < len; i++) {
					var selValue = ele.options[i].value;
					if(selValue == "-1" && !ele.options[i].selected)
						num++;
				}
			}
			else if(ele.checked && !ele.disabled) {
				num++;
			}
		});
		// Slider durchgehen
		allIn = $(this).find('.num_slider > div[id^=slider]');
		allIn.each(	function (ix) {
			var slider = $(this);
			if(slider.length > 0) {
				var vals = slider.slider('values');
				var max = slider.slider('option','max');
				if(vals[0] > 0 || vals[1] < max)
					num++;
			}
		});
		// Tab Text mit Anzahl versehen
		var tabs = $("a.count_equip");
		var tab = $(tabs[ixTab]); 
		var tabText = $.trim(tab.text());
		var ixB = tabText.indexOf('(');
		if(ixB != -1) {
			tabText = tabText.substring(0,ixB);
		}
		if(num > 0)
			tab.text(tabText + " (" + num + ')');
		else
			tab.text(tabText);
		// Breite des Tabs anpassen
		tab.css( {'width':'', 'paddingLeft':'10px', 'paddingRight':'10px'});
	});
}

var oneSelected = false;
var onlyAudi = false;
function setTabJSON(jsonTab) {
	var aDat; try{aDat=jsonTab.t;}catch(ex){};if(aDat == undefined)return true;
	var sTab = aDat[0];
	if(sTab=="t_manuf") {
		if(!onlyAudi)
			onlyAudi = aDat.length == 2 || aDat.length == 4 && aDat[3] == "Audi";
	} else
	if(!oneSelected && (sTab=="t_eq_a" || sTab=="t_eq_p")) {
		var eLen = aDat.length-1;
		for(var ixBox=2; ixBox<eLen; ixBox++) {
			if(aDat[ixBox]==1) {
				oneSelected = true;
				break;
			}
		}
	}
	var partnerOnly = (sTab=="t_location") ? paOnly : 0;

	var selTab = document.s[sTab];
	if(!(selTab==undefined)) {
		var lTab = (aDat.length-2)>>1;
		if(selTab.options) { // dropdown normal
			var resTab = document.getElementById('res'+sTab);
			var selected = (aDat[1] !== null);
			if (partnerOnly == 1) {
				selected = (aDat[1] == aDat[2]) && (aDat[2].indexOf('M') == -1);
			}
			if(resTab) resTab.style.display = (selected)?"block":"none";
			selTab.options.length = selTab.length = 0;
			if(lTab > 1 && !selected) {
				selTab.options[selTab.length] = new Option("",-1, false, false);
			}
			for(var i=0; i<lTab; i++) {
				var ix = aDat[(i<<1)+2];
				if(ix != -1) { 
					selTab.options[selTab.length] = new Option(aDat[(i<<1)+3], ix, false, ix == aDat[1]);
				}
			}
			if(selected) {
				selTab.options[selTab.length] = new Option(tsReset,-1, false, false);
			}
		}
		else if(aDat[1]=='C') { // Checkbox2
			// console.log(selTab.name + ' ' + selTab.value);
			if(lTab == 1) {
				selTab.checked  = (aDat[2] == selTab.value);
				selTab.disabled = (aDat[3] == 0);
			} else
				selTab.disabled = selTab.checked = false;
		}
		else if(aDat[1]=='c') {	// Checkboxes
			var eLen = document.s.elements.length;
			for(var ixBox=0; ixBox<eLen; ixBox++) {
				var box = document.s.elements[ixBox];
				if(sTab == box.name)
				{	var dat = aDat[parseInt(box.value) + 2];
					box.checked = (dat==1);
					box.disabled = (dat>1);
				}
			}
		}
	}
	else { 
		if(aDat[1]=='s') {	// Slider
			var sliderSel = sTab.substring(2, sTab.length-3);
			var isFrom = sTab.indexOf('_fr') != -1;
			var slider = $('#slider_'+sliderSel); 
			if(slider.length == 0) return;
			var listValidIx = [];
			for(var i = 0; i<aDat.length-3; i++)
				listValidIx[i] = aDat[i+3];
			slider.slider('option', ((isFrom) ? 'ixListFr' : 'ixListTo'), listValidIx);
		}
	}
}

function fillCurrentSelection(jsonTab) {
	var aDat; try{aDat=jsonTab.t;}catch(ex){};if(aDat == undefined)return true;
	var selTxt = $('#slt'+aDat[0]);
	if(selTxt.length > 0) {
		if(aDat[1]!=undefined) {	// selected
			selTxt.text(aDat[3]);
		}
		else {
			selTxt.text('');
		}
	}
	else {
		selTxt = $('#slt_'+aDat[0].substring(2,4));
		if(selTxt.length > 0) {
			if(aDat[1]=='s') {
//				if(aDat[2]!=undefined) {
				var tab = aDat[0].substring(2,4);
				var fromTo = $(".fromto" + tab + " span");
				var isTo = aDat[0].indexOf("_to") != -1;
				var txtFr = $("#t_" + tab + "_fr").text();
				var ixNumFr = getIxNum(txtFr);
				var ixNumTo = -1;
				$(fromTo.eq(1)).text((ixNumFr < 0) ? "" : txtFr.substring(ixNumFr));
				if(isTo) {
					txtTo = $("#t_"+ tab+"_to").text();
					ixNumTo = getIxNum(txtTo);
					$(fromTo.eq(3)).text((ixNumTo < 0) ? "" : txtTo.substring(ixNumTo));
				}
				else
					$(fromTo.eq(3)).text("");
				if(ixNumFr > 0 && ixNumTo > 0) {
					$(fromTo.eq(0)).text("");
					$(fromTo.eq(2)).text(" - ");
				}
				else {
					$(fromTo.eq(0)).text((ixNumFr < 0) ? "" : txtFr.substring(0, ixNumFr));
					$(fromTo.eq(2)).text((ixNumTo < 0) ? "" : txtTo.substring(0, ixNumTo));
				}
				if(tab=="pe" || tab=="pm" || tab=="lm")
					$(fromTo.eq(4)).text((ixNumTo < 0 && ixNumFr < 0) ? "" : " EUR");
				else if(tab=="km")
					$(fromTo.eq(4)).text((ixNumTo < 0 && ixNumFr < 0) ? "" : " km");
			}
		}
	}
}
function getIxNum(txt) {
	var ix = -1;
	for(var i = 0; i < txt.length; ++i) {
		var ch = txt.charAt(i);
		if(ch >= '0' && ch <= '9') {
			ix = i;
			break;
		}
	}
	return ix;
}

var dyn=false;
function ajaxSearch(url)
{
	if(url.indexOf("&tab=") != -1) {
		if(dyn)
			url += "&d=1";
		url += "&ts="+(new Date).getMilliseconds()
	}
	$.getJSON(url,"",function(data){selUpdate(data);});
	showWait();
}

/**
* Everything that needs to be done at onload needs to go here
*
* Constructor
* @method initialize
* @return {Void}
*/
audi_ngw.vtp.search.initialize = function() {
	
	this.__className =  'audi_ngw.vtp.search';
	this.__classVersion= '1.1';
	
	$('#UkCity').keyup(function(e) { if(e.keyCode == 13) { doDSearch(document.getElementById('UkCity'),true); }});
	$('#UkPLZ').keyup(function(e) { if(e.keyCode == 13) { doDSearch(document.getElementById('UkPLZ'),true); }});
	
	if($("#s select").length > 0) {
		// Slidersyntax (siehe jqSlider.js) -> slider: [idWrapper.slider[0], idWrapper.slider[1], idWrapper.slider[2]]
		vtpSliderInitialize({slider: ['slider_pe', 't_pe_fr', 't_pe_to']});
		vtpSliderInitialize({slider: ['slider_ez', 't_ez_fr', 't_ez_to']});
		vtpSliderInitialize({slider: ['slider_km', 't_km_fr', 't_km_to']});
		vtpSliderInitialize({slider: ['slider_kw', 't_kw_fr', 't_kw_to']});
		vtpSliderInitialize({slider: ['slider_hu', 't_hu_fr', 't_hu_to']});
		vtpSliderInitialize({slider: ['slider_pm', 't_pm_fr', 't_pm_to']});
		vtpSliderInitialize({slider: ['slider_lm', 't_lm_fr', 't_lm_to']});

		bWait = false;
// Change event for Select element getting fired on click
// http://dev.jquery.com/ticket/5959
//		$("#s select").change(function(e){
//			selTab(this);
//		});
		$("#s input:checkbox").bind('click', function(e){
			selCheck(this);
		});
		ajaxSearch(vtpUrl);
		audi_ngw.vtp.statistic.vtpTrack(s,"initSearch");
	}
	
	// FIX DANG-3810 Link Merkzettel anzeigen im Accordion funktioniert nicht.
	// Aufruf ueber api funktion
	$("#allMzLink").click(function () {
		//onClose Callback
		var param = { onClose: vtpModalOnClose };
		audi_ngw.layer.modal.api.show($(this).attr('href'),param);
		return false;
	});
	
	$("#allSaLink").click(function () {
		audi_ngw.layer.modal.api.show($(this).attr('href'));
		return false;
	});
};

$(document).ajaxError(function(event, request, settings){
	// reload page
	setTimeout( function() {
		window.location.href = window.location.href;
	}, 1000);
	// console.log("Error requesting page " + settings.url);
});
