// *****************************************************
// ************    result.js
 /**
 * Diese JavaScript Datei definiert allgemeine Funktionalitäten die auf der
 * Ergebnisliste zu finden sind.
 * z.B.:
 *   - Das Umschalten der verschiednen Ansichten (Kompakt, Standard oder Listenansicht)
 * 
 * Bearbeiter: ych,md,lso
 *
 * Bibliothek(en): jquery
 *
 **/
var goNavContext = {
	init: function(){		
		// Set objects of toggles of context navigation
		// ych: die Notation [0] stellt ein DOM-Object sicher, anstatt ein jquery-Object
		goNavContext.oToggleBranches = $('#toggleBranches');
		goNavContext.oToggleRelBranches = $('#toggleRelBranches');
		goNavContext.oToggleCities = $('#toggleNextCities');
		goNavContext.oToggleTopCities = $('#toggleTopCities');
		goNavContext.oToggleWeb = $('#toggleWebSearch');
		goNavContext.oToggleCoops = $('#toggleCoops'); 					// Cooperations
		goNavContext.oToggleCityFavorites = $('#toggleCityFavorites'); 	// City Favorites
		
		// Set objects for links in context navigation (show more)
		goNavContext.oMoreBranches = $('#lnkMoreBranches');
		goNavContext.oMoreRelBranches = $('#lnkMoreRelBranches');
		goNavContext.oMoreNextCities = $('#lnkMoreNextCities');
		goNavContext.oMoreWebSearch = $('#lnkMoreWebSearch');

		// Init Ids
		goNavContext.sCurrentClickedBoxId = "";
		goNavContext.sCurrentClickedToggleId = "";
		
		// Check if user accepts cookies and store value
		goNavContext.booCookiesAccepted = goNavContext.isCookiePossible();
		// Set InitValues of filterCookie
		// TODO
		var showMap = (Pref.getSuggestCookie()&4) ? 1 : 0;
		goNavContext.arrFilterCookie = ["branchFilter=1", "taxFilter=1", "neighborhoodFilter=1", "showMap="+showMap];		
		// Load filter cookie
		goNavContext.getFilterCookie();
		
		// Set EventHandlers
		goNavContext.setObjHandlers();
	},
	setObjHandlers: function(){
		//alert("setObjHandlers() called");
		
		// Add handlers for contextNav-Toggles
		if(this.oToggleBranches) this.oToggleBranches.click(this.toggleBox);		
		if(this.oToggleRelBranches) this.oToggleRelBranches.click(this.toggleBox);		
		if(this.oToggleCities) this.oToggleCities.click(this.toggleBox);
		if(this.oToggleTopCities) this.oToggleTopCities.click(this.toggleBox);
		if(this.oToggleWeb) this.oToggleWeb.click(this.toggleBox);
		if(this.oToggleCoops) this.oToggleCoops.click(this.toggleBox);
		if(this.oToggleCityFavorites) this.oToggleCityFavorites.click(this.toggleBox);
		
		// Add handlers for "more"-links
		if(this.oMoreBranches) this.oMoreBranches.click(this.toggleLinkAmount);
		if(this.oMoreRelBranches) this.oMoreRelBranches.click(this.toggleLinkAmount);
		if(this.oMoreNextCities) this.oMoreNextCities.click(this.toggleLinkAmount);
		if(this.oMoreWebSearch) this.oMoreWebSearch.click(this.toggleLinkAmount);

		
	},
	toggleBox: function(evt){
		(isIE) ? evt.returnValue = false : evt.preventDefault();
		var obj = evt.target;
		
		// Store Clicked Box- and Toggle-Ids
		goNavContext.setCurrentClickedBoxId(goNavContext.getBoxId(this));
		goNavContext.setCurrentClickedToggleId(goNavContext.getToggleId(this));
		
		//alert("toggleBox: " + goNavContext.getBoxId(obj));
		if(goNavContext.getToggleStatus(this) == "small"){
			// Remove BoxClass "small"
			$("#"+goNavContext.getCurrentClickedBoxId()).removeClass("small");
			// Change Toggle-Title
			goNavContext.setToggleTitle("small");
			// Set cookie for filter to 1 (expanded): Get name of filter from clicked toggle-id
			goNavContext.setFilterCookie(goNavContext.getFilternameFromBoxId(goNavContext.getCurrentClickedBoxId()), 1);
		} else {
			// Set BoxClass "small"
			$("#"+goNavContext.getCurrentClickedBoxId()).addClass("small");
			// Change Toggle-Title
			goNavContext.setToggleTitle("large");
			// Set cookie for filter to 0 (small): Get name of filter from clicked toggle-id
			goNavContext.setFilterCookie(goNavContext.getFilternameFromBoxId(goNavContext.getCurrentClickedBoxId()), 0);			
		}
	},
	isCookiePossible: function(){
		$.cookie("GoYellowCookiesPossible", "OK",  {expires:30,path: '/'});
		if (!$.cookie("GoYellowCookiesPossible"))
			return false;
		else {
			return true;			
		}
	},
	initFilterCookie: function(){
		var showMap = (Pref.getSuggestCookie()&4) ? 1 : 0;
		$.cookie("GY_CONTEXTNAV", "branchFilter=1|taxFilter=1|neighborhoodFilter=1|showMap="+showMap,  {expires:1,path: '/'});
	},
	getFilterCookie: function(){
		var cook = $.cookie("GY_CONTEXTNAV");
		if (isUndefOrNull(cook) ||cook.indexOf("showMap=")==-1) { this.initFilterCookie(); }
		else { if(this.booCookiesAccepted) this.arrFilterCookie = cook.split("|"); }
	},
	setFilterCookie: function(sFiltername, nType){
		//alert("setFilterCookie: " + sFiltername);
		if(!this.booCookiesAccepted) return;
		for(var i = 0; i < this.arrFilterCookie.length; i++){
			// If filtername found in array, write given values
			if(this.arrFilterCookie[i].indexOf(sFiltername) == 0){
				this.arrFilterCookie[i] = sFiltername + "=" + nType;
				this.sFilterCookie = this.arrFilterCookie.join("|");
			}
		}
		// Write Cookie with joined values
		if(this.sFilterCookie) $.cookie("GY_CONTEXTNAV", this.sFilterCookie, {expires:1,path: '/'});
	},
	getFilternameFromBoxId: function(sId){
		switch(sId){
			case "contextNav_branches":
				return "branchFilter";
				break;			
			case "contextNav_relatedBranches":
				return "taxFilter";
				break;
			case "contextNav_nextCities":
				return "neighborhoodFilter";
				break;
		}
	},
	setToggleTitle: function(sType){
		var oAnchor = goUtils.getDom(this.getCurrentClickedToggleId()).getElementsByTagName("a")[0];
		var oImg = goUtils.getDom(this.getCurrentClickedToggleId()).getElementsByTagName("a")[0].getElementsByTagName("img")[0];
		(sType == "small") ? oAnchor.title = "Box einklappen" : oAnchor.title = "Box ausklappen";
		(sType == "small") ? oImg.alt = "Box einklappen" : oImg.alt = "Box ausklappen";
	},
	getToggleId: function(obj){
		return $(obj).parents(".toggle").attr("id");
	},
	getBoxId: function(obj){
		return $(obj).parents(".boxContextNav").attr("id");
	},
	toggleLinkAmount: function(evt){
		(isIE) ? evt.returnValue = false : evt.preventDefault();
		var obj = evt.target;
		// Get rid of border
		obj.blur();
		
		// Get List from box-Id
		//ych: this statt obj funktioniert nicht in IE, warum ??? in FF ok. Bsp. sepa+iserlohn > "Weitere Orte"
		$(obj).parents(".boxContent").removeClass("limited");	
		// Set cookie for filter to 2 (full extended): Get name of filter from clicked toggle-id
		goNavContext.setFilterCookie(goNavContext.getFilternameFromBoxId(goNavContext.getBoxId(obj)), 2);
		//alert(goUtils.getDom(goNavContext.getBoxId(obj)).getElementsByTagName("ul")[0]);
	},
	setCurrentClickedBoxId: function(sId){
		this.sCurrentClickedBoxId = sId;
	},
	getCurrentClickedBoxId: function(){
		return this.sCurrentClickedBoxId;
	},
	setCurrentClickedToggleId: function(sId){
		this.sCurrentClickedToggleId = sId;
	},
	getCurrentClickedToggleId: function(){
		return this.sCurrentClickedToggleId;
	},
	getToggleStatus: function(obj){
		// Return "small" if class "small" was set, otherwise "large"
		return ($("#"+this.getCurrentClickedBoxId()).hasClass("small") ? "small" : "large")
	}
}


//  Taxonomie
var goResult = {
	tax:{
		expand: function(){
			$("#taxLinksRest").css(goUtils.css.visible);
			$("#taxMore").css(goUtils.css.invisible);
			return false;
		}
	},
	openClick2Dial: function(voipUrl,queryString){
		 	var strUrl = voipUrl;
		        strUrl += "c2c-goyellow/Click2DialForm.jsp?c2dQuery=" + queryString;
		        strWinProps = "width=" + 565 + ",height=" + 620 + ",titlebar=no,status=yes,toolbar=no,menubar=no,scrollbars=no,resizable=yes";
		        goUtils.win.open(strUrl, "click2Dial", strWinProps);
        		return false;
	}	
}

$(function () {
	// show all reviews (von zis für Bewertung)
	$("#btnAllReview").click(function () {
		$(".hiddenReview:hidden").show();
		$("#btnAllReview").hide();
	});
});
$(function () {
	// show all references (von zis für Empfehlungen)
	$("#btnAllReferences").click(function () {
		$(".hiddenReferences:hidden").show();
		$("#btnAllReferences").hide();
	});
});
$(document).ready(function(){ 
	// jQuery
  // Links, die zum Ein-/Ausblenden dienen, erhalten ein rel="visibility"
  var arrA = $("a[rel='visibility']").each(function(intIndex){
    // ausgeblendeter Bereich, ID definieren
    var linkID = String($(this).attr('href')).substr(1, $(this).attr('href').length);
    // Bereich verstecken
    if(linkID){
      $('#'+linkID).addClass('unseen');
	  $('#'+'hide'+linkID).addClass('rename');
	  $('#'+'img'+linkID).hide();
    }
 
    // Funktion Ein-/Ausblenden
    $(this).toggle(
      function(){
        $('#'+linkID).removeClass('unseen'); // schnelles Einblenden
		$('#'+'points'+linkID).hide('fast'); // Pünktchen verstecken
		$('#'+'img'+linkID).show('fast'); // schnelles Einblenden Zusatzbilder
		$('#'+'show'+linkID).addClass('rename'); // toggle Linkbezeichnung		
		$('#'+'hide'+linkID).removeClass('rename');  // toggle Linkbezeichnung
      },
      function(){
        $('#'+linkID).addClass('unseen'); // schnelles Ausblenden
		$('#'+'points'+linkID).show('fast'); // Pünktchen wieder zeigen
		$('#'+'img'+linkID).hide('fast'); // schnelles Ausblenden Zusatzbilder
		$('#'+'hide'+linkID).addClass('rename');  // toggle Linkbezeichnung
		$('#'+'show'+linkID).removeClass('rename');  // toggle Linkbezeichnung
      }
    );
  });
});



function uncoverNumber(id, si8){
	$("#" + id + "A").hide();
	$("#" + id + "B").show();
	$("#" + id + "C").show();
	if (si8 != '')
	{
		var idList = id.split ("N");
		goUtils.misTracking ("PAGE=uncoverNumber" + idList [1] + "&ACTION=uncoverNumber&SI6="+ idList [0] + "&SI8=" + si8);
	}
	var uncoverList = $.cookie("GY_UCL");
	if (! isString (uncoverList)) uncoverList = "";
	$.cookie("GY_UCL", "S" + id.concat(uncoverList).substr (0, 500), {expires:1,path: '/'});
		// 500 Zeichen entsprechen ca. 50 Telefonnummer IDs d.h. danach ist die Info verloren (FIFO Prinzip), gültigkeit mit Absicht nur 1 Tag
	return false;
};

