var jsonUrl = "http://www.bmwi.de/BMWi/Navigation/Service/Suche/json.html";
var searchtermLength = 1;
var allResultsUrl = "http://www.bmwi.de/BMWi/Navigation/Service/suche.html";

/* Cookies: */
function createCookie(items) {
	if(items == "") {
		items = "empty";
	}
	$.cookie('bmwi_home', items, { expires: 365, path: '/' } );
}

function readCookie(cookieName) {
	var cookie = $.cookie(cookieName);
	if(cookie == "empty") {
		return "";
	} else {
		return cookie;
	}
}

// Reihenfolge der Boxen im Portletbereich auslesen und speichern:
function saveOrder(items) {
	if(!items) {
		items = $("#portletBereich").sortable("toArray");
	}
	if (items == null) {
		createCookie("empty");
	} else {
		createCookie(items);
	}
}
 
function getOrder() {
	var list = $("#portletBereich");
	if (list == null) return;
	return list.sortable("toArray");
}

// function that restores the list order from a cookie
function restoreOrder() {
	var list = $("#portletBereich");
	if (list == null) return;
 
	// fetch the cookie value (saved order)
	var cookie = readCookie('bmwi_home');
	if (!cookie) return;
	// make array from saved order
	var IDs = cookie.split(",");
 
	// fetch current order
	var items = list.sortable("toArray");
 
	// make array from current order
	var rebuild = new Array();
	for ( var v=0; v < items.length; v++) {
		rebuild[items[v]] = items[v];
	}
 
	for (var i = 0, n = IDs.length; i < n; i++) {
 
		// item id from saved order
		var itemID = IDs[i];
 
		if (itemID in rebuild) {
 
			// select item id from current order
			var item = rebuild[itemID];
 
			// select the item according to current order
			var child = $("#portletBereich").children("#" + item);
 
			// select the item according to the saved order
			var savedOrd = $("#portletBereich").children("#" + itemID);
 
			// remove all the items
			child.remove();
 
			$("#portletBereich").filter(":first").append(savedOrd);
		}
	}
}

// Neue Boxen nachladen			
function resetCheckboxesToSavedState() {
	// Cookie mit den IDs der Portlets einlesen bzw neu anlegen...
	var cookie = readCookie('bmwi_home');
	if (!cookie) {
		saveOrder();
		cookie = readCookie('bmwi_home');
	}
	$("#homepageConfigBox input:checkbox").each( function(intIndex) {
		$(this).attr('checked', false);
		if (cookie.indexOf(this.name) >= 0) {
			$(this).attr('checked', true);
		}
	});
}

// Neue Boxen nachladen			
function saveCustomBoxLayout() {
	// Cookie mit den IDs der Portlets einlesen bzw neu anlegen...
	var cookie = readCookie('bmwi_home');
	if (!cookie) {
		saveOrder();
		cookie = $.cookie('bmwi_home');
	}
	// ...und in ein Array speichern
	if(cookie != null) {
		var cookieIds = cookie.split(",");
	} else {
		var cookieIds = new Array();
	}
	
	var aktiveBoxen = new Array();
	var inaktiveBoxen = new Array();

	var url = $("#portletUrl").attr("value");
	
	// aktive Checkboxen sammeln und mit Liste der Portlets vergleichen
	$("#homepageConfigBox input:checkbox:checked").each( function(intIndex) {
		aktiveBoxen[intIndex] = this.name;
		
		// wenn aktive Checkbox nicht im Cookie ist...
		if ((cookieIds.join("")).indexOf(this.name) < 0) {
			// ...dann das Portlet vom Server nachladen...
			$.get(url, { did: this.name.substring(1, this.name.length), view: 'render', pageStructureContext: 'HomepageDynamic' },
				function(data){
					// ...und an den Portletbereich anhaengen
					$("#portletBereich").append(data);
					$("#portletBereich .portlet .inner").addClass("sortable");
					
					var portletRemoveBtn = $("#portletBereich .portlet:last .portletRemove");
					
					portletRemoveBtn.css("display","block");
					portletRemoveBtn.click(function() {			
						$("#homepageConfigBox input[name=" + $(this).parent().parent().parent().attr("id") + "]").attr('checked', false);
						saveCustomBoxLayout();
					});

				}
			);
		}

	});
	// inaktive checkboxen in array speichern
	$("#homepageConfigBox input:checkbox:not(:checked)").each( function(intIndex) {
		inaktiveBoxen[intIndex] = this.name;
		// wenn inaktive in cookie-array...
		if ((cookieIds.join("")).indexOf(this.name) >= 0) {
			// ...dann entfernen
			$("#portletBereich #" + this.name).replaceWith('');
		}

	});
	
	var cookievorher = $.cookie('bmwi_home');
	if(cookievorher != null) {
		var cookievorherDaten = cookievorher.split(",");
	} else {
		var cookievorherDaten = new Array();
	}

	var aktuelleBoxen = "";
	for(var i=0; i < cookievorherDaten.length; i++) {
		for(var j=0; j < aktiveBoxen.length; j++) {
		
			if( cookievorherDaten[i] == aktiveBoxen[j] ) {
				aktuelleBoxen = aktuelleBoxen + cookievorherDaten[i] + ",";
			}
		}
	}
	
	var skip = false;
	for(i=0; i < aktiveBoxen.length; i++) {
		for(j=0; j < cookievorherDaten.length; j++) {
	
			if( aktiveBoxen[i] == cookievorherDaten[j] ) {
				skip = true;
				break;
			} else {
				skip = false;
			}
		}
		if (skip == false) {
			aktuelleBoxen = aktuelleBoxen + aktiveBoxen[i] + ",";
		}
	}

	// Komma am Ende entfernen
	aktuelleBoxen = aktuelleBoxen.slice(0, aktuelleBoxen.length-1);
	
	// Cookie speichern
	createCookie(aktuelleBoxen);
	cookie = $.cookie('bmwi_home');

	return false;

}


function bmwiHomepage(jsonUrlCms,searchtermLengthCms,allResultsUrlCms) {

	jsonUrl = jsonUrlCms;
	searchtermLength = searchtermLengthCms;
	allResultsUrl = allResultsUrlCms;

	$("#configContainer").toggleClass("closed");
	$("#homepageConfigButton").removeClass("hide");
	
	
	if ($("#blockUserPortlets").attr("value") != 'true') {
		$("#portletBereich .portlet .inner").addClass("sortable");
	}

	$("#content").css("zoom", 1);		// IE7 Fix

	// "Startseite einrichten"-Button:
	$(".plusbutton").click(function () {
		$("#homepageConfigBox").slideToggle("slow");
		$("#configContainer").toggleClass("closed");
		$(this).toggleClass("minusbutton");
		return false;
	});
	
	
	// add javascript to actionscript calls
	$('a#callTopeaserStart').click(function(){
		var rotationStatus = true;
		getSwfObject("swfobject_0").startTeaserRotation(rotationStatus);
		return false;
	});
	$('a#callTopeaserStop').click(function(){
		var rotationStatus = false;
		getSwfObject("swfobject_0").startTeaserRotation(rotationStatus);
		return false;
	});
		

	
	/* Autocomplete 
	$("#suche").autocomplete("/suggest.htm", {
		delay:30,
		minChars:1,
		matchSubset:1,
		matchContains:1,
		cacheLength:5,
		autoFill:true,
		maxItemsToShow:10,
		onItemSelect:selectItem,
		onFindValue:findValue
	});
	*/
	
	// Portletbereich drag- und dropbar machen:
	$("#portletBereich").sortable({
		cursor: "move",
		handle: "h2",
		//distance: 0,
		revert: "true",
		//tolerance: "pointer",
		placeholder: "grauerRahmen",
		update: function(){
			saveOrder();
		}
	});
	
	
	$("#homepageConfigBox #saveButton").click( function() {
		saveCustomBoxLayout();
		$("#homepageConfigBox").slideToggle("slow");				
		$("#homepageConfigButton").toggleClass("minusbutton");
		return false;
	});
	
	$("#homepageConfigBox #resetButton").click( function() {
		var items = $("#defaultPortlets").val();	   
		var url = $("#portletUrl").attr("value");

		$("#homepageConfigBox input:checkbox").each( function(intIndex) {
			$(this).attr('checked', false);
			if (items.indexOf(this.name) >= 0) {
				$(this).attr('checked', true);
			}		  
		});	 
		$("#portletBereich").empty();

		items = items.split(",");		  // IE workaround    

		for (var i = 0; i < items.length; i++) {
			$.get(url, { did: items[i].substring(1, items[i].length), view: 'render', pageStructureContext: 'HomepageDynamic' },
				function(data){
					$("#portletBereich").append(data);
					$("#portletBereich .portlet .inner").addClass("sortable");
				}
			);	      
		}
		saveOrder(items);
		$("#homepageConfigBox").slideToggle("slow");
		$("#homepageConfigButton").toggleClass("minusbutton");
		return false;		  
	});
	
	$("#homepageConfigBox #cancelButton").click( function() {
		resetCheckboxesToSavedState();
		$("#homepageConfigBox").slideToggle("slow");
		$("#homepageConfigButton").toggleClass("minusbutton");
		return false;
	});
	
	var cookie = readCookie('bmwi_home');
	if (cookie == null) {
		var items = $("#defaultPortlets").val();	   
		var url = $("#portletUrl").attr("value");

		$("#homepageConfigBox input:checkbox").each( function(intIndex) {
			$(this).attr('checked', false);
			if (items.indexOf(this.name) >= 0) {
				$(this).attr('checked', true);
			}		  
		});	 
	}
	
	/* Alle Checkboxen aus/abwaehlen und speichern: */
	$("#homepageConfigBox #allBoxes input:checkbox").bind("click change", function() {
		
		var status = $(this).attr('checked');
		
        $("#homepageConfigBox li[id!='allBoxes'] input:checkbox").each( function(index) {
			$(this).attr('checked', status);
        });
		
	    saveCustomBoxLayout();
	    //return false;
	});
	
		
	/* "Alle Checkboxen" deaktiveren, wenn nicht mehr alle angehakt sind: */
	$("#homepageConfigBox li[id!='allBoxes'] input:checkbox").change( function() {
	    if( $(this).attr('checked') == false) {
	        $("#homepageConfigBox #allBoxes input:checkbox").attr('checked', false);
	    }
	    return false;
	});

}

$(document).ready(function(){
	
	$("body").addClass("javascriptTrue");
	
	if($("#homepageConfigButton").is("li")) {
		$("#homepageConfigButton").css("display","block");
	}
	
	if($("#portletBereich").is("div")) {
		$("#portletBereich .inner").addClass("sortable");
		$(".portletRemove").css("display","block");
	}
	
	/* Pressemitteilungen, scrollbare Liste */
	
	// initialize scrollable 
    
	$(".containerList").wrap("<div class=\"scrollableListContainer\" />");
	
	$(".containerList").css({height: "auto", width:"278px"});
	
	if ($('.scrollableListContainer').length > 0) {

		$(".scrollableListContainer").after('<div class="scrollableListContainerActions"><a class="prevPage browse up"></a><a class="nextPage browse down"></a></div>');
		
		$(".scrollableListContainer").scrollable({ 
			vertical:true,  
			size: 2
		// use mousewheel plugin 
		}).mousewheel();
	}
	
	// initialize scrollable 
	$(".introtext p:last-child").append("<br/><br/><br/>")
	$(".introtext").wrap("<div class=\"scrollableListContainerTop\" />");
	$(".introtext").addClass("introitem");
	$(".introtext").removeClass("introtext");
	if ($('.scrollableListContainerTop').length > 0) {

		$(".scrollableListContainerTop").after('<div class="scrollableListContainerActions"><a class="prevPage browse up"></a><a class="nextPage browse down"></a></div>');
		
		$(".scrollableListContainerTop").scrollable({ 
			vertical:true,  
			size: 1
		// use mousewheel plugin 
		}).mousewheel();
	}
	
	
	if($(".tabContent #sitemap").is("div")) {
		
		$(".tabContent #sitemap > ul").treeview({
			persist: "location",
			animated: "fast",
			collapsed: true,
			unique: true
		});
	}
				
	if($(".tabNavi").is("ul")) {
		
		$(".tabNavi > li.elem").hover(
		  function () {
		  
		  if($("#searchResults").css("display")!="block") {	
				
				$(".tabNavi li").removeClass("over");	  
				$(this).addClass("over");
				$(this).addClass("tab");

			}
			return false;
		  }, function() {
				if($("#searchResults").css("display")!="block") {	
					$(".tabNavi li").removeClass("over");
				}
				$(".tabNavi li:first").addClass("over");
				$(".tabNavi li:first").addClass("tab");
		  });
		  
	
	}
	
	if($(".portletRemove").is("span")) {
		$(".portletRemove").click(function() {			
			$("#homepageConfigBox input[name=" + $(this).parent().parent().parent().attr("id") + "]").attr('checked', false);
			saveCustomBoxLayout();
		});
		
	}
	
//#######################dynamische Suche#######################//
			
	var rsltsExpose = $("#searchResults").expose({api:true,lazy:true, color: '#6d707a', onBeforeClose: function(event) { $("#searchResults").fadeOut(250); clearSearchInput(); }});

	$("#searchInput").attr({ autocomplete:"off" });
	
	//query after change
	$("#searchInput").bind("keyup", function() { 
		getResult();
	});
		

	function getResult(){
		var searchterm=$("#searchInput").attr("value");
		if(searchterm.length >= searchtermLength){
			$.getJSON(jsonUrl+"?searchText="+escape(searchterm)+"&jsoncallback=?",{searchterm:escape(searchterm)},handleResult);
		}
		window.clearTimeout(true);
	}

	function handleResult(result) {
		var rslts = $("#searchResults");
		var searchterm=$("#searchInput").attr("value");
		var rsltString = "";
		var maxItems = 6;
		
		rsltString = ("");
		
		//check result length
		if(result.items.length > 0){
		
			//rsltString  = '<h3>BMWi Hauptangebot: '+ result.items.length +' <a href="#" id="searchResultClose"><\/a><\/h3>';
			rsltString  = '<h3>BMWi Hauptangebot <a href="#" id="searchResultClose"><\/a><\/h3>';
			rsltString += '<div class="listContainer clearfix"><ul class="resultList cf">';
		
			//parse results
			$.each(result.items, function(i,item){
				if (item.media.m != "") {
					rsltString += '<li class="clearfix">';
					rsltString += '<a class="imgLink" href="#"><img src="' + item.media.m + '" alt="" width="54" \/><\/a>';
				} else {
					rsltString += '<li class="indent clearfix">';
				}
				rsltString += '<h4><a href="'+item.link+'">'+item.title+'<\/a><\/h4>';
				rsltString += '<p>'+item.description+'<\/p>';
				rsltString += '<\/li>';
				if (i==maxItems) return false;
				
			});
			
			rsltString += '<\/ul>';
			rsltString += '<a href="'+allResultsUrl+'?searchText='+searchterm+'" class="linkIntern">Alle Ergebnisse<\/a><\/div>';
			
			rslts.html(rsltString);

		} else {
			rsltString = ('<h3>BMWi Hauptangebot <a href="#" id="searchResultClose"><\/a><\/h3>');
			rsltString += ('<div class="listContainer clearfix">');
			rsltString += ('<p class="emptyResult">');
			rsltString += ('<a href="'+allResultsUrl+'?searchText='+searchterm+'">Keine Ergebnisvorschl&auml;ge f&uuml;r diesen Suchbegriff, versuchen Sie es mit der Volltextsuche<\/a>');
			rsltString += ('<\/p>');
			rsltString += ('<\/div>');
			rslts.html(rsltString);
		}
		
		$("#searchResultClose").click(function() {
			$("#searchResults").fadeOut(250);
			clearSearchInput();
			rsltsExpose.close();
			return false;
		});
		//show results
		if(rslts.css("display")!="block"){
			rslts.fadeIn(250);
			rsltsExpose.load();
		}
	}
	
	function clearSearchInput(){
		$("#searchInput").val("");
	}
	
	function getFlashVersion() {
		var playerVersion = swfobject.getFlashPlayerVersion(); // returns a JavaScript object
		var output = "You have Flash player " + playerVersion.major + "." + playerVersion.minor + "." + playerVersion.release + " installed";
	}

});

