/**
 * JavaScript für die Detail-Darstellung
 *
 * @author hwoltersdorf
 * @package discoTEL
 */
function Details()
{
	var self = this;

	/**
	 * Ändert die Selektion der Wunschrufnummern
	 *
	 * @param boolean add Hinzufügen oder entfernen?
	 * @param string mobile_number Rufnummer
	 */
	this.changeNumberSelection = function( add, mobile_number )
	{
		var change_type = add ? 'add' : 'remove';
		var params = [mobile_number, change_type];
		params.push( function( result )
		{
			self.updateCurrentSelection( result );

		} );

		ajax.call( 'DiscoTel_OfferOutput::ajaxChangeNumberSelection', params );
	};

	/**
	 * Aktualisiert die Seitenelemente bzgl. der Wunschrufnummernauswahl
	 *
	 * @param object ajax_result Ajax-Ergebnis
	 */
	this.updateCurrentSelection = function( ajax_result )
	{
		var numbers		= ajax_result.numbers;
		var salesprice	= ajax_result.salesprice;

		var container = $('#current_selection');
		var list = '<ul>%s</ul>';

		// Keine Nummer ausgewählt
		if ( numbers.length == 0 )
			list = list.replace( '%s', '<li>Keine Rufnummer ausgewält</li>' );
		else
		{
			// Nummern auflisten
			var items = '';
			$(numbers).each( function()
			{
				items += '<li style="font-size: 13px; font-weight: bold;">';
				items += this;
				items += '&nbsp;<img src="/sites/discotel/gfx/icon_trash.png" onclick="details.changeNumberSelection(0,\'';
				items += self.getClearNumber( this );
				items += '\');" style="vertical-align: top; cursor: pointer; float: right;" />';
				items += '</li>';
			} );

			items += '<li style="font-size: 13px; list-style-type: none; border-top: 1px solid #505050; padding-top: 4px;">';
			items += 'Aufpreis (einmalig): ' + salesprice + '</li>';

			list = list.replace( '%s', items );
		}

		container.html( list );

		// Checkboxen in der sichtbaren Liste bereinigen
		this.clearCheckedNumbers( numbers );

		// Bestellbutton (de)aktivieren
		if ( numbers.length > 0 )
		{
			$('#order_button').removeClass( 'disabled' );
			$('#order_button').removeAttr('disabled');
		}
		else
		{
			$('#order_button').addClass( 'disabled' );
			$('#order_button').attr('disabled', 'checked');
		}

	};

	/**
	 * Bereinigt die Checkboxen in der sichtbaren Liste
	 *
	 * @param array numbers Rufnummern-Array
	 */
	this.clearCheckedNumbers = function( numbers )
	{
		var clean_numbers = [];
		$(numbers).each( function( index, elem )
		{
			clean_numbers.push( self.getClearNumber( elem ) );
		} );

		$('input[name^=numbers]').each( function( index, elem )
		{
			elem.checked = ($.inArray( elem.value, clean_numbers ) > -1);
		} );
	};

	/**
	 * Gibt eine bereinigte Rufnummer zurück im Format 4917...
	 *
	 * @param string number Rufnummer (dirty)
	 * @return string
	 */
	this.getClearNumber = function( number )
	{
		number = number.replace( /^0/, '49' );
		number = number.replace( ' / ', '' );
		return number;
	}

	// Tabs für Detailseite initialisieren
	var tabs = new Tabs( 'datasheet_tabs' );
	tabs.init();
}

// Instanz erstellern
var details = null;
$( function()
{
	details = new Details();
} );
