
// Watchlist Variablen
var wiWlEnabled = wiHasBoCookie();
var wiWlSets = ['wiWlSet1'];
var wiWlCart = new Object();
wiWlCart.items = [ ];

// Nur die letzten (3) anzeigen
var wiWlCartVisibleSize = 3;

function wiWlGoWlManager(sort)
{
	var params = {quellen: qm.getSelectedQuellen()};
	if (sort && sort != null && sort != "")
		params.sort = sort;
	
	location.href = _wiContextPath + "/merkliste/liste.html?" + Object.toQueryString(params);
}

function wiWlAddSet(name) {
	var name = $F('wiWlSetName');
	if (name != '') {
		var newDiv = Builder.node('div', {id: 'wiWlSet' + (wiWlSets.length + 1), className: 'wiWlSet', style: 'display:none;' }, [
			Builder.node('h3', {className: 'handle'}, name)
		]);

		wiWlSets.push(newDiv.id);
		$('wiWatchlistContainer').appendChild(newDiv);
		Effect.Appear(newDiv.id);
		wiWlDestroyLineItemSortables();
		wiWlCreateLineItemSortables();
		wiWlCreateSetSortable();
	}
}

function wiWlCreateLineItemSortables() {
	for(var i = 0; i < wiWlSets.length; i++) {
		Sortable.create(wiWlSets[i],{tag:'div',dropOnEmpty: true, containment: wiWlSets,only:'wiWlArticle'});
	}
}

function wiWlDestroyLineItemSortables() {
	for(var i = 0; i < wiWlSets.length; i++) {
		Sortable.destroy(wiWlSets[i]);
	}
}

function wiWlCreateSetSortable() {
	Sortable.create('wiWatchlistContainer',{tag:'div',only:'wiWlSet',handle:'handle'});
}


var wiWlMessageNotLoggedIn = new Template(
	'Die Funktion "#{fn}" steht nur angemeldeten Benutzern zur Verfügung. \n\nBitte melden Sie sich an.'
);

var wiWlItemFormat = new Template(
	'<div id="wiWlArt#{id}" class="wiWlArticle">' +
	'<div class="wiWlArtLeft"><a href="#{url}">' +
	'#{titel}' +
	'<br />#{quellname}#{datumTrenner}#{datum}' +
	'</a></div>'
);

function wiWlGetItemFromCart(wiWlCart, dokId)
{
	var item = null;
	for(var i=0; i<wiWlCart.items.length; i++)
	{
		if (wiWlCart.items[i].id == dokId)
		{
			item = wiWlCart.items[i];
			break; 
		}
	}
	return item;
}

// Artikel der Merkliste hinzufügen
function wiWlAddArticle(wiWlCart,newItem)
{
	if (!wiHasBoCookie())
	{
		alert(wiWlMessageNotLoggedIn.evaluate({fn:'Artikel merken'}));
		return;
	}

	for(var i=0; i<wiWlCart.items.length; i++)
	{
		if (wiWlCart.items[i].id == newItem.id)
			return;
	}
	
	newItem.einfuegedatum = new Date().toJSON();  // Format: '"1969-12-31T19:01:47Z"'

	wiWlCart.items.push(newItem);

	// nur die letzten (3) anzeigen
	wiWlRefreshView(wiWlCart, wiWlCartVisibleSize);

	/*
	wiWlDestroyLineItemSortables();
	wiWlCreateLineItemSortables();
	wiWlCreateSetSortable();
	*/

	wiWlAddToWatchlist(newItem);
}

// Einen Artikel aus der Merkliste entfernen
function wiWlRemoveArticle(wiWlCart, dokId)
{
	if (!wiHasBoCookie())
	{
		alert(wiWlMessageNotLoggedIn.evaluate({fn:'Artikel aus Merkliste entfernen'}));
		return;
	}

	var item = null;
	for(var i=0; i<wiWlCart.items.length; i++)
	{
		if (wiWlCart.items[i].id == dokId)
		{
			item = wiWlCart.items[i];
			wiWlCart.items.splice(i, 1);
			break; 
		}
	}

	if (item != null)
	{
		// nur die letzten (3) anzeigen
		wiWlRefreshView(wiWlCart, wiWlCartVisibleSize);
		wiWlRemoveItemFromWatchlist(item);
	}
}

// Artikel aus großer TL entfernen 
function wiWlRemoveArticleTl(wiWlCart, dokIdString, itemId, quellname)
{
	var cartItem = wiWlGetItemFromCart(wiWlCart, dokIdString);
	wiWlRemoveArticle(wiWlCart, dokIdString);
	var removeTab = wiWlCheckRemoveTab(wiWlCart, cartItem, quellname);

	Effect.Fade(itemId, {duration: 0.5});

	if (removeTab)
	{
		tabToHide = 'wiH2Tab' + quellname;
		Effect.Fade(tabToHide, {duration: 0.4});
	}
}

function wiWlCheckRemoveTab(wiWlCart, cartItem, quellname)
{
	if (quellname == '')
		return false;

	var removeTab = true;
	for(var i=0; i<wiWlCart.items.length; i++)
	{
		if (wiWlQuellenMatch(quellname,wiWlCart.items[i])) 
		{
			removeTab = false;
			break;
		}
	}
	return removeTab;
}

function wiWlQuellenMatch(quellname,itemA)
{
	var val = false;
	var group = quellname.toLowerCase();
	var quellnameA = itemA.quellname.toLowerCase();

	if (group == 'spiegel')
	{
		if (quellnameA.indexOf('spiegel') != -1)
			val = true;
	}
	else if (group == 'mm')
	{
		if (quellnameA.indexOf('manager') != -1)
			val = true;
	}
	else 
	{
		if (group == quellnameA)
			val = true;
	}
	return val;
}

function wiWlRefreshView(wiWlCart,anz)
{
	wiWlUpdateCartCounter(wiWlCart.items.length);

	var counter = 0;
	var wlSetDiv = $('wiWlSet1'); 
	if (wlSetDiv != null)
	{
		wlSetDiv.update();
	
		for(var i=wiWlCart.items.length-1; i>=0; i--)
		{
			if (counter >= anz)
				break;
	
			counter++;
			thisItem = wiWlCart.items[i];
	
			if (thisItem.datum != null && thisItem.datum != "")
				thisItem.datumTrenner = " - ";
			else
				thisItem.datumTrenner = "";
	
			wlSetDiv.insert(wiWlItemFormat.evaluate(thisItem));			
		}
	}
}

// aktuell letztes item löschen, display updaten
function wiWlRemoveItems(wiWlCart)
{
	if (wiWlCart.items.length == 0)
	{
		alert('Die Merkliste ist leer!');
		return;
	}

	removeItem = wiWlCart.items[wiWlCart.items.length-1]

	myCheck = confirm('Wollen Sie den Eintrag \n\'' + removeItem.titel + '\'\n wirklich entfernen?');

	if (myCheck == false)
  		return;
  		
  	var articleArea = $('wiArticleArea' + removeItem.id);
  	if (articleArea != null) 
  		Effect.Fade('wiArticleArea' + removeItem.id, {duration: 0.5});

	wiWlRemoveItemFromWatchlist(removeItem);

	wiWlCart.items = wiWlCart.items.without(removeItem);

	// nur die letzten (3) anzeigen
	wiWlRefreshView(wiWlCart, wiWlCartVisibleSize);
}

function wiWlUpdateCartCounter(anzahl)
{
	if (anzahl > 0)
		$('wiWlCartCounter').update('[' + anzahl + ']');
	else
		$('wiWlCartCounter').update();
		
	var counterGross = $('wiMLMCartCounter');
	if (counterGross != null)
		counterGross.update(anzahl);
}

// konvertiert ein CartItem zum BoItem
function cartItem2BoItem(cartItem)
{
	var xml = '<watchlistitem>';
	if (cartItem.einfuegedatum && cartItem.einfuegedatum != null)
	{
		xml = xml + '<date_added>';
		xml = xml + cartItem.einfuegedatum;
		xml = xml + '</date_added>';   
	}
	xml = xml + '</watchlistitem>';
	

	var val = {
		name: cartItem.titel,
    	description: cartItem.url,
    	object: cartItem.id,
    	type: 'WIWL_ITEM',
    	group: '',
    	text: xml,
    	extra1: cartItem.quellname,
    	extra2: cartItem.datum
	};
	return val;
}

// konvertiert ein BoItem zum CartItem 
function boItem2CartItem(boItem)
{
	// Bugfix: hier muss die URL unescaped werden, da sie vielleicht (vielleicht auch nicht) escaped in der DB vorliegt.

	var val = {
		id: boItem.object,
		url: unescape(boItem.description),
		titel: boItem.name,
		quellname: boItem.extra1,
		datum: boItem.extra2
	};
	return val;
}

function wiWlDispNotLoggedIn(myDivId)
{
	$(myDivId).update('<div id="wiWatchlistContainer" class="wiWatchlistContainer"><i>Bitte melden Sie sich an!</i></div>');
}


/*
//
// Ajax-Funktionen
//
*/

function wiWlShowWatchlist(myDivId,myErrorMessage)
{
	wiWlToken = ctrl.getCookie('wiWlToken');
	var myToken = new Date();
	if (wiWlToken == null || wiWlToken == '' || wiWlToken == '0') wiWlToken = 'XX' + myToken.getTime();
	URL = _wiContextPath + '/backoffice/container/wi-watchlist.html';
	wlParams = { wiWlToken: wiWlToken };

	new Ajax.Request(URL, {
		method: 'get',
		parameters: wlParams,
		onSuccess: function(transport) 
		{
			if (200 == transport.status)
			{
				$(myDivId).update(transport.responseText);
			}
			else
			{
				$(myDivId).update(myErrorMessage);
			}
		}
	});
}


function wiWlAddToWatchlist(cartItem)
{
	boItem = cartItem2BoItem(cartItem);
	wlAddUrl = _wiContextPath + '/backoffice/wi-add_to_watchlist.html';

	new Ajax.Request(wlAddUrl, {
		parameters: boItem,
		method: 'get',
		onComplete: function(transport) {
			/*
		    if (200 == transport.status)
		    	alert("OK");
		    else
		    	alert("Fehler: " + transport.status);
		    */
		}
	});
}

function wiWlRemoveItemFromWatchlist(cartItem)
{
	boItem = cartItem2BoItem(cartItem);
	wlRemoveUrl = _wiContextPath + '/backoffice/wi-remove_from_watchlist.html';

	new Ajax.Request(wlRemoveUrl, {
		parameters: boItem,
		method: 'get',
		onComplete: function(transport) {
			/*
		    if (200 == transport.status)
		    	alert("OK");
		    else
		    	alert("Fehler: " + transport.status);
		    */
		}
	});
}
