/**
 * Functies specifiek voor de NS
 * @author 	Mark van der Linde
 * @author 	Kevin Franke
 * @version 	1.0 
 */

YAHOO.namespace('traphicTrein');
var refreshTimer;
var initialTableHeight;
var handlerURL;
var tooltip;
var traphicTrein = {
	asyncHandler:{
		handleSuccess:function(o) {
			this.successLogic(o);	//to show scope preservation.
			},
		successLogic:function(o){ 
			var arr = o.responseText.split( '--;--' );
			if( arr.length >= 2 ){
				switch( arr[ 0 ] ){
					case '0':
						traphicTrein.HandleF0( arr );
						break;
					case '1':
						traphicTrein.HandleF1( arr );
						break;
					case '2':
						traphicTrein.HandleF2( arr );
						break;				
					}
				}
		},
	handleFailure:function(o){ 
		// window.status=o.responseText; 
		},
	startRequest:function( functionID, stationID ){
		YAHOO.util.Connect.asyncRequest(
			'GET', // Math.random to prevent caching in IE...
			handlerURL + '?FunctionID=' + functionID + '&StationID=' + stationID +'&Random='+Math.random(),
				{
				success:this.handleSuccess,
				failure:this.handleFailure,
				argument:[],
				scope: this
				},
		"new=1&old=2");
		}
	},
	sizeTreinInfoVenster: function(){
			var schermhoogte = YAHOO.util.DragDropMgr.getClientHeight();
			var schermbreedte = YAHOO.util.DragDropMgr.getClientWidth();
			var dialogHeight = YAHOO.traphicTrein.panel.element.scrollHeight;
			if ( document.getElementById( 'tabelVenster' ) ){
				var tableHeight = document.getElementById( 'tabelVenster' ).scrollHeight;
				var newHeight = tableHeight - ( dialogHeight - schermhoogte ) - 20;
				if ( newHeight > initialTableHeight ){newHeight = initialTableHeight;}
				if ( YAHOO.traphicTrein.panel ){
				// 20 pixels voor boven en onder ruimte
					YAHOO.util.Dom.setStyle('tabelVenster','height', newHeight +'px' );	
					YAHOO.traphicTrein.panel.render( document.body ); 
					YAHOO.traphicTrein.panel.center();
					}
				}		
		},
	HandleF0: function ( resultArray ){
		YAHOO.traphicTrein.panel.setBody( resultArray[ 2 ] );
		YAHOO.traphicTrein.panel.render( document.body ); 
		if ( document.getElementById( 'tabelVenster' ) ){
			initialTableHeight = document.getElementById( 'tabelVenster' ).scrollHeight;
			}
		traphicTrein.sizeTreinInfoVenster();	
		YAHOO.traphicTrein.panel.show();		
		},
	HandleF1: function ( resultArray ){
		var index = 0;
		var img;
		for( index = 1; index < resultArray.length; index+=2 ){
			img = document.getElementById( resultArray[ index ] + "IMG" );	// get the img object
			if ( img ){img.src= resultArray[ index + 1 ];}
			}
		},
	HandleF2: function ( resultArray ){
		//document.getElementById( 'status' ).innerHTML = resultArray[ 1 ];
		},
	refresh: function(){
		traphicTrein.asyncHandler.startRequest( 1, 'n' );
	//	asyncHandler.startRequest( 2, '' );
		refreshTimer = setTimeout( traphicTrein.refresh, 120000 );
		},
	init: function() {
		handlerURL = './vertrektijden.aspx';
		YAHOO.traphicTrein.panel = new YAHOO.widget.Panel("win", { effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.2}, width:"650px", fixedcenter: true, constraintoviewport: true,  underlay:"none", close:true, visible:false, draggable:true, modal:false, monitorresize:true} );
		YAHOO.traphicTrein.panel.render( document.body );
		refreshTimer = setTimeout(traphicTrein.refresh, 5000 );
		// wijs tooltips toe aan de stations...		
		var tooltipstations=YAHOO.util.Dom.getElementsByClassName('station');
		var myTooltip = new YAHOO.widget.Tooltip("myTooltip", { context:tooltipstations } ); 	 
   		}	
	}
	
function showpanel( stationsNaam ){
	if ( YAHOO.traphicTrein.panel )	{
		traphicTrein.asyncHandler.startRequest( 0, stationsNaam );	
		traphicTrein.sizeTreinInfoVenster();	
		}
	}

YAHOO.util.Event.addListener(window, "load", traphicTrein.init);
YAHOO.util.Event.addListener(window, "unload", traphic.rememberXY);

