// Datatable
(function() {


	//
	// FORMATTERS
	//
	var formatZiel = function(elCell, oRecord, oColumn, sData){
		elCell.innerHTML = '' + sData + '';
	}
	
	var formatPreis = function(elCell, oRecord, oColumn, sData){
		elCell.innerHTML += sData;
	}
	
	var formatAirline = function(elCell, oRecord, oColumn, sData){
		link = 'http://' + oRecord.getData('homepage');
		elCell.innerHTML = '<a href="' + link + '" title="Homepage von "' + sData + ' target="_blank">' + sData + '</a>';
	}
	
	var formatRoute = function(elCell, oRecord, oColumn, sData){
		routeImg = 'http://'+HOST+'/resources/img/cached/';
		routeImg += (sData == 'O') ? 'pfeil_oneway_weiss.gif' : 'pfeil_return_weiss.gif';
		routeTitle = (sData == 'O') ? 'Nur Hinflug' : 'Hin- und R&uuml;ckflug';
		imgTag = '<img src="'+ routeImg +'" title="' + routeTitle + '"  />';
		elCell.innerHTML = imgTag;
	}
	
	var formatBemerkung = function(elCell, oRecord, oColumn, sData){
		translation=false;
		if(TEXTS[sData]!=null){
			translation = TEXTS[sData];
		}
		if(translation){
			elCell.innerHTML = translation;
		}
		else
		{
			elCell.innerHTML = sData.replace(/ab/ , TEXTS['ab']);
		}
	}
	
	var formatStart = function(elCell, oRecord, oColumn, sData){
		elCell.innerHTML = sData;
	}
	
	var formatPreis = function(elCell, oRecord, oColumn, sData){
		elCell.innerHTML = '<a href="#" title="'+TEXTS['SHOW_PRICE_DETAILS']+'" onclick="showPriceDetails('+oRecord.getData('id')+',\''+site_locale+'\'); return false;">'+TEXTS['ab']+' '+sData+' &euro;</a>';
	}
	
	var formatOnlineBuchen = function(elCell, oRecord, oColumn, sData){
   	 	link = 'http://';
   	 	if(oRecord.getData('start') == 'N'){
   			link +=  oRecord.getData('homepage');
   	 	}
   	 	else 
   	 	{
			onewayswitch = (oRecord.getData('route') == 'O') ? '1' : '';
	   	 	link += HOST + TEXTS['URL_BOOK_ONLINE'] + '?depApt=HAM&dstApt=' + oRecord.getData('codeziel') + 
						'&cr_restriction=' + oRecord.getData('codeairline') + '&onewayswitch=1';
			//NOT NEEDED   	 &Day=10&month_1=8-2008&RetDay=20&month_2=8-2008
   	 	} 
   	 	
		elCell.innerHTML =  '<a href="' + link + '" title="online buchen" >' + TEXTS['LINK_ONLINE_BUCHEN'] + '</a>' ;
	}
	
	
	YAHOO.widget.DataTable.MSG_ERROR = TEXTS.ERROR;
	YAHOO.widget.DataTable.MSG_EMPTY = TEXTS.EMPTY;
	YAHOO.widget.DataTable.MSG_LOADING = TEXTS.LOADING;
	YAHOO.namespace("FHG");
	YAHOO.FHG.dataTable = null;
    YAHOO.FHG.dataSource = null;
	var Dom = YAHOO.util.Dom;
	var Event = YAHOO.util.Event;
	
	// callback function handles the response data
	var oCallback = {
	    success: function(oRequest,oResponse,oPayload) { 
        	YAHOO.FHG.dataTable.onDataReturnInitializeTable( oRequest , oResponse , oPayload );
	    }, 
	    failure: function(oRequest,oResponse,oPayload) { 
	    }, 
	    scope: this
	};
	
    
	// when document-tree has been loaded
    Event.onDOMReady(function() {
        // define columns to use
	    var myColumnDefs = [
	      	{ key: "ziel", label: TEXTS['Ziel'], sortable:true, formatter:formatZiel},
	      	{ key: "preis", label: TEXTS['Preis'], sortable:true,  formatter:formatPreis},
	      	{ key: "route", label: TEXTS['Route'], formatter:formatRoute},
	      	{ key: "airline", label: TEXTS['airline'],  sortable:true, formatter:formatAirline},
	      	{ key: "bemerkung", label: TEXTS['Bemerkung'], formatter:formatBemerkung},
	      	{ key: "start", label: TEXTS['Online Buchen'], formatter:formatOnlineBuchen}
	    ];
	    
		// initialize data source for Table
	    YAHOO.FHG.dataSource = new YAHOO.util.DataSource("http://" + window.location.host +"/dynamic/preiswertabhamburg_data.php?locale="+site_locale);
	    YAHOO.FHG.dataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
		
		// response schema
		YAHOO.FHG.dataSource.responseSchema = {
		    resultsList: "results",
			    fields: [
			    	{ key: "id" },
			    	{ key: "ziel" },
			    	{ key: "codeziel" },
			    	{ key: "airline" },
			    	{ key: "codeairline" },
			    	{ key: "preis" },
			    	{ key: "route" },
			    	{ key: "homepage" },
			    	{ key: "bemerkung" },
			    	{ key: "start" }
		        ]
		    };
		    
		// instantiate data table
    	YAHOO.FHG.dataTable = new YAHOO.widget.DataTable(
    		"datatable", 
    		myColumnDefs,   
    		YAHOO.FHG.dataSource,
    		{
    			initialRequest:"", 
    			sortedBy:{key:'ziel', dir:YAHOO.widget.DataTable.CLASS_ASC}
    		}
    	);

		// set sort direction for table headers
		var initEventHandler = function(){
			// first th
			th0 = Dom.getElementsBy(
				function(el){
					return el.id == 'yui-dt0-th0';
				},
				'th',
				'yui-dt0-hdrow0'
			)[0];

			sortAnchors = Dom.getElementsByClassName(
				'yui-dt-sortable',
				'a',
				'yui-dt0-hdrow0',
				function(el){
					// delete tooltip
					el.setAttribute('title',"");
				}
			);
		}
		
		var columnSortEventHandler = function(column, dir){
			sortAnchors = Dom.getElementsByClassName(
				'yui-dt-sortable',
				'a',
				'yui-dt0-hdrow0',
				function(el){
					// delete tooltip
					el.setAttribute('title',"");
				}
			);
		}
		
		YAHOO.FHG.dataTable.subscribe('initEvent', initEventHandler);
		YAHOO.FHG.dataTable.subscribe('columnSortEvent', columnSortEventHandler);
    	
    });
})();


