/*global $,log,app,style,svc,ml,confmodell,modeldisplayCtrl,layoutManager */
/*global showWaitDiv,mehrauswahl,lastChangedMnr,replaceWeirdChars */
/*global mausDetailsExpanded,mausDetailsAlleState,addplus,setGlobalMausVars,toggleMausDetail,forgetOpenDetails,setAllDetailsBackground,forgetAllOpenDetails,rememberOpenDetails,openMausDetail,closeMausDetail,setRememberedMausDetailsState */
/*global $maus_detail_schliessen_text,$maus_current_tr, $maus_detail_schliessen_tex, $maus_bild_tex, $maus_mausalle_extrazeilen, $maus_mausliste_caption_extrazeilen, $maus_bild_div, $maus_bild_text */

function initMaus(callstring)
{
	//- Checkbox fuer Mehrausstattungs-Auswahl anklicken
	$("input[name='MNR']").click (function () {
		showWaitDiv();
		if(app.isShowroom){
			lastChangedMnr = this.value;
		}
		mehrauswahl (callstring, this.value); // laedt #content
	});
}

function initAction()
{
	// toggle-function auf einzelne "Detail"-Links registrieren
	$("td span.action").click(function() {
		toggleMausDetail($(this));
	});
	
	// toggle-function bei Action-Link "Alle Details anzeigen / schliessen"
	$("#toggleMausDetailAlle").click(function() {
		if (mausDetailsAlleState === 'doOpen')
		{
			// alle Details oeffnen
			$("td span.action").each(function() {
				rememberOpenDetails($(this));
			});
			setRememberedMausDetailsState('open');
			
			// beim naechsten Click sollen alle geschlossen werden
			mausDetailsAlleState = 'doClose';
			
			// "Alle Details anzeigen" -> "Alle Details schliessen"
			$(this).text(ml.cc3DetailClose_all);
			
			// evtl. Hintergrund aller Ausstattungen aktualisieren
			setAllDetailsBackground();
		}
		else
		{
			// alle aktuell geoeffneten Details schliessen
			setRememberedMausDetailsState('close');
			forgetAllOpenDetails();
			
			// beim naechsten Click sollen alle angezeigt werden
			mausDetailsAlleState = 'doOpen';
			
			// "Alle Details schliessen" -> "Alle Details anzeigen"
			$(this).text(ml.cc3DetailShow_all);
			
			// evtl. Hintergrund aller Ausstattungen aktualisieren
			setAllDetailsBackground();
		}
		layoutManager.updateInfoSize();
	});
}

function toggleMausDetail($_this)
{
	setGlobalMausVars($_this);
	
	if ($maus_mausalle_extrazeilen.hasClass('remove_it')) {
		openMausDetail($_this);
	} else {
		closeMausDetail($_this);
	}
	layoutManager.updateInfoSize();
}

function setRememberedMausDetailsState(state)
{
	for (var i=0; i < mausDetailsExpanded.length; i++) {
		if (mausDetailsExpanded[i] === '') {	
			continue;
		}
		
		var $mausActionElement = $(replaceWeirdChars("#" + mausDetailsExpanded[i])).parent().parent().find("span.action:eq(0)");
		setGlobalMausVars($mausActionElement);
		if (state === 'open') {	
			openMausDetail($mausActionElement, true);
		} else if (state === 'close') {	
			closeMausDetail($mausActionElement);
		}
	}
}

function setGlobalMausVars($_this)
{
	// aktuelle table-row (tr)
	$maus_current_tr = $_this.parent().parent();
	// Text: Detail / Schliessen
	$maus_detail_schliessen_text = $maus_current_tr.find('.action:eq(0)');
	// Text: Bild
	$maus_bild_text = $maus_current_tr.find('.action:eq(1)');
	// div mit Extrazeilen
	$maus_mausalle_extrazeilen = $maus_current_tr.find('div:eq(1)');
	// div mit Caption und Extrazeilen
	$maus_mausliste_caption_extrazeilen = $maus_current_tr.find('.mausliste_caption').parent();
	// div mit Bild der Mehrausstattung
	$maus_bild_div = $maus_current_tr.find('.image_maus');
}

function openMausDetail($_this, skip)
{
	// "Detail" -> "Schliessen"
	$maus_detail_schliessen_text.text(ml.cc3Close);
	if ($maus_detail_schliessen_text.hasClass('maus_without_detailtext')) {	
		$maus_detail_schliessen_text.removeClass('remove_it');
	}
	
	// Extrazeilen anzeigen
	$maus_mausalle_extrazeilen.removeClass('remove_it');
	$maus_mausliste_caption_extrazeilen.addClass('text-expanded');
	$maus_current_tr.addClass('grey');
	
	// "Bild"-Text ausblenden und Bild anzeigen
	if(!app.isShowroom) { 
		$maus_bild_text.addClass('remove_it'); 
	}
	$maus_bild_div.removeClass('remove_it');
	$maus_bild_div.parent().removeClass('top');
	
	// "+" Bildchen ueber Vorschau-Bild legen
	addplus($maus_bild_div);
	
	// merken dass Details: OFFEN
	if (!skip) {	
		rememberOpenDetails($_this);
	}
}

function closeMausDetail($_this)
{
	// "Schliessen" -> "Detail"
	$maus_detail_schliessen_text.text(ml.cc3Detail);
	if ($maus_detail_schliessen_text.hasClass('maus_without_detailtext'))
	{	$maus_detail_schliessen_text.addClass('remove_it');
	}
	
	// Extrazeilen ausblenden
	$maus_mausalle_extrazeilen.addClass('remove_it');
	$maus_mausliste_caption_extrazeilen.removeClass('text-expanded');
	$maus_current_tr.removeClass('grey');
	
	// Bild ausblenden und "Bild"-Text anzeigen
	$maus_bild_text.removeClass('remove_it');
	$maus_bild_div.addClass('remove_it');
	$maus_bild_div.parent().addClass('top');
	
	// merken dass Details: GESCHLOSSEN
	forgetOpenDetails($_this);
}

function rememberOpenDetails($_this)
{
	var $current_tr = $_this.parent().parent();
	var mausID = $current_tr.find('input:eq(0)').attr('id');
	
	// HINZUFUEGEN zur Liste der geoeffneten Details
	mausDetailsExpanded[mausDetailsExpanded.length] = mausID;
}

function forgetOpenDetails($_this)
{
	var $current_tr = $_this.parent().parent();
	var mausID = $current_tr.find('input:eq(0)').attr('id');
	
	// ENTFERNEN aus Liste der geoeffneten Details
	for (var i=0; i < mausDetailsExpanded.length; i++) {
		if (mausDetailsExpanded[i] === mausID) {	
			mausDetailsExpanded[i] = '';
		}
	}
}

function forgetAllOpenDetails()
{
	mausDetailsExpanded = [];
}

function setAllDetailsBackground()
{
	// VW: *alle* TRs grau hinterlegen (auch die ohne Detail-Text/Bild)
	if (style.isVw)
	{
		if (mausDetailsAlleState === 'doClose') {
			$('table.modell_mausalle tr:gt(0)').addClass('grey');
		} else {
			$('table.modell_mausalle tr:gt(0)').removeClass('grey');
		}
	}
}

// plus-Icon ueber das Bild legen
function addplus($_maus_bild_div)
{
	var $_myset;
	if ($_maus_bild_div)
	{	$_myset = $maus_bild_div.children('.maus_img');
	}
	else
	{	$_myset = $(".maus_img");
	}
	
	$_myset.each(function(i,n) {
		$(n).next().attr('style','left: ' + (n.width-20) + 'px');
	});
}
