var eventMgr;
var rec;

naviki.main.NavikiClient = {
		init : function(){
			/**
			 * Extend classes and override methods
			 */
			/* Naviki Portlets stuff */
			YAHOO.lang.extend(naviki.main.ModalDialog, YAHOO.widget.Dialog,
						{
				 			bringToTop:	naviki.main.ModalDialog.prototype.bringToTop,
				 			show:       naviki.main.ModalDialog.prototype.show,
				 			hide:       naviki.main.ModalDialog.prototype.hide 
						});
			YAHOO.lang.extend(naviki.main.portlets.LayoutColumns, naviki.main.portlets.AbstractLayout,
				{
					updatePortletPositions: naviki.main.portlets.LayoutColumns.prototype.updatePortletPositions,
					updatePortletPosition:  naviki.main.portlets.LayoutColumns.prototype.updatePortletPosition,
					getPortletWidth: 		naviki.main.portlets.LayoutColumns.prototype.getPortletWidth,
					getContainerID: 		naviki.main.portlets.LayoutColumns.prototype.getContainerID,
					addNewPortlet: 			naviki.main.portlets.LayoutColumns.prototype.addNewPortlet,
					placePortlet:			naviki.main.portlets.LayoutColumns.prototype.placePortlet,
					placeAllPortlets:		naviki.main.portlets.LayoutColumns.prototype.placeAllPortlets,
					initialize:				naviki.main.portlets.LayoutColumns.prototype.initialize,
					onResize:               naviki.main.portlets.LayoutColumns.prototype.onResize
				});
			YAHOO.lang.extend(naviki.main.portlets.AbstractPortlet, YAHOO.widget.Panel,
				{
					setDBID: 				naviki.main.portlets.AbstractPortlet.prototype.setDBID,
					getXMatrixPosition:		naviki.main.portlets.AbstractPortlet.prototype.getXMatrixPosition,
					getYMatrixPosition: 	naviki.main.portlets.AbstractPortlet.prototype.getYMatrixPosition,
					setXMatrixPosition: 	naviki.main.portlets.AbstractPortlet.prototype.setXMatrixPosition,
					setYMatrixPosition:		naviki.main.portlets.AbstractPortlet.prototype.setYMatrixPosition,
					setMinimized:			naviki.main.portlets.AbstractPortlet.prototype.setMinimized,
					getType:				naviki.main.portlets.AbstractPortlet.prototype.getType,
					updatePositionInLayout:	naviki.main.portlets.AbstractPortlet.prototype.updatePositionInLayout,
					onSaveSuccess:			naviki.main.portlets.AbstractPortlet.prototype.onSaveSuccess,
					onSaveFail:				naviki.main.portlets.AbstractPortlet.prototype.onSaveFail,
					save:					naviki.main.portlets.AbstractPortlet.prototype.save,
					getPageID:				naviki.main.portlets.AbstractPortlet.prototype.getPageID,
					onHiding:				naviki.main.portlets.AbstractPortlet.prototype.onHiding,
					onDragging:				naviki.main.portlets.AbstractPortlet.prototype.onDragging,
					getPanelContainer:		naviki.main.portlets.AbstractPortlet.prototype.getPanelContainer,
					getX:					naviki.main.portlets.AbstractPortlet.prototype.getX,
					getY:					naviki.main.portlets.AbstractPortlet.prototype.getY,
					render:					naviki.main.portlets.AbstractPortlet.prototype.render,
					initialize:				naviki.main.portlets.AbstractPortlet.prototype.initialize,
					updatePagination:		naviki.main.portlets.AbstractPortlet.prototype.updatePagination,
					addDDRow:	            naviki.main.portlets.AbstractPortlet.prototype.addDDRow,
					updatePortlet:          naviki.main.portlets.AbstractPortlet.prototype.updatePortlet,
					updateWidth:            naviki.main.portlets.AbstractPortlet.prototype.updateWidth
				});
			YAHOO.lang.extend(naviki.main.portlets.MostExportedWaysPortlet, naviki.main.portlets.AbstractPortlet,
				{
					formatTableRow: 		naviki.main.portlets.MostExportedWaysPortlet.prototype.formatTableRow,
					initialize: 			naviki.main.portlets.MostExportedWaysPortlet.prototype.initialize
				});
			YAHOO.lang.extend(naviki.main.portlets.BestRatedWaysPortlet, naviki.main.portlets.AbstractPortlet,
				{
					formatTableRow: 		naviki.main.portlets.BestRatedWaysPortlet.prototype.formatTableRow,
					initialize: 			naviki.main.portlets.BestRatedWaysPortlet.prototype.initialize
				});
			YAHOO.lang.extend(naviki.main.portlets.MyBestRatedWaysPortlet, naviki.main.portlets.AbstractPortlet,
				{
					formatTableRow: 		naviki.main.portlets.MyBestRatedWaysPortlet.prototype.formatTableRow,
					initialize: 			naviki.main.portlets.MyBestRatedWaysPortlet.prototype.initialize
				});
			YAHOO.lang.extend(naviki.main.portlets.MyWaysPortlet, naviki.main.portlets.AbstractPortlet,
				{
					formatTableRow: 		naviki.main.portlets.MyWaysPortlet.prototype.formatTableRow,
					initialize: 			naviki.main.portlets.MyWaysPortlet.prototype.initialize
				});
			YAHOO.lang.extend(naviki.main.portlets.MyPrivateWaysPortlet, naviki.main.portlets.AbstractPortlet,
				{
					formatTableRow: 		naviki.main.portlets.MyPrivateWaysPortlet.prototype.formatTableRow,
					initialize: 			naviki.main.portlets.MyPrivateWaysPortlet.prototype.initialize
				});
			YAHOO.lang.extend(naviki.main.portlets.MyLongestWaysPortlet, naviki.main.portlets.AbstractPortlet,
				{
					formatTableRow: 		naviki.main.portlets.MyLongestWaysPortlet.prototype.formatTableRow,
					initialize: 			naviki.main.portlets.MyLongestWaysPortlet.prototype.initialize
				});
			YAHOO.lang.extend(naviki.main.portlets.LongestWaysPortlet, naviki.main.portlets.AbstractPortlet,
				{
					formatTableRow: 		naviki.main.portlets.LongestWaysPortlet.prototype.formatTableRow,
					initialize: 			naviki.main.portlets.LongestWaysPortlet.prototype.initialize
				});
			YAHOO.lang.extend(naviki.main.portlets.NewestWaysPortlet, naviki.main.portlets.AbstractPortlet,
				{
					formatTableRow: 		naviki.main.portlets.NewestWaysPortlet.prototype.formatTableRow,
					initialize:				naviki.main.portlets.NewestWaysPortlet.prototype.initialize				
				});
			YAHOO.lang.extend(naviki.main.portlets.HeighestWaysPortlet, naviki.main.portlets.AbstractPortlet,
				{
					formatTableRow: 		naviki.main.portlets.HeighestWaysPortlet.prototype.formatTableRow,
					initialize:				naviki.main.portlets.HeighestWaysPortlet.prototype.initialize				
				});
			YAHOO.lang.extend(naviki.main.portlets.HeighestWaysPortlet, naviki.main.portlets.AbstractPortlet,
				{
					formatTableRow: 		naviki.main.portlets.HeighestWaysPortlet.prototype.formatTableRow,
					initialize:				naviki.main.portlets.HeighestWaysPortlet.prototype.initialize				
				});
			YAHOO.lang.extend(naviki.main.portlets.UsersWithMostKMUploadsPortlet, naviki.main.portlets.AbstractPortlet,
				{
					formatTableRow: 		naviki.main.portlets.UsersWithMostKMUploadsPortlet.prototype.formatTableRow,
					initialize:				naviki.main.portlets.UsersWithMostKMUploadsPortlet.prototype.initialize				
				});
			
			YAHOO.lang.extend(naviki.main.portlets.MyPublicWaysPortlet, naviki.main.portlets.AbstractPortlet,
				{
					formatTableRow: 		naviki.main.portlets.MyPublicWaysPortlet.prototype.formatTableRow,
					initialize: 			naviki.main.portlets.MyPublicWaysPortlet.prototype.initialize
				});
			YAHOO.lang.extend(naviki.main.portlets.MyRoutingRequestPortlet, naviki.main.portlets.AbstractPortlet,
				{
					formatTableRow: 		naviki.main.portlets.MyRoutingRequestPortlet.prototype.formatTableRow,
					initialize: 			naviki.main.portlets.MyRoutingRequestPortlet.prototype.initialize
				});	
			
			YAHOO.lang.extend(naviki.main.portlets.DDobject, YAHOO.util.DDProxy,
				{
					startDrag:	 			naviki.main.portlets.DDobject.prototype.startDrag,
					endDrag:      			naviki.main.portlets.DDobject.prototype.endDrag,
					onDrag:    	  			naviki.main.portlets.DDobject.prototype.onDrag,
					deleteWay:              naviki.main.portlets.DDobject.prototype.deleteWay
				});	
			
			/* end of Portlets */
			YAHOO.lang.extend(naviki.dialog.EditInPlaceDlg, YAHOO.widget.Dialog,
				{
					handleSubmit : naviki.dialog.EditInPlaceDlg.prototype.handleSubmit,
					switchEditMode : naviki.dialog.EditInPlaceDlg.prototype.switchEditMode,
					focusDefaultButton : naviki.dialog.EditInPlaceDlg.prototype.focusDefaultButton,
					focusFirst : naviki.dialog.EditInPlaceDlg.prototype.focusFirst
				});


			YAHOO.extend(naviki.main.MapTaskNode, YAHOO.widget.TextNode, naviki.main.MapTaskNode.override);
			YAHOO.extend(naviki.main.OpenLayerTaskNode, YAHOO.widget.TextNode, naviki.main.OpenLayerTaskNode.override);
		
			YAHOO.lang.extend(naviki.main.Way.dd, YAHOO.util.DDProxy,
				{
			 		startDrag:	naviki.main.Way.dd.prototype.startDrag,
			 		endDrag:    naviki.main.Way.dd.prototype.endDrag,
			 		onDrag:     naviki.main.Way.dd.prototype.onDrag
				});			
			
			YAHOO.lang.extend(naviki.main.RoutingRequest.dd, YAHOO.util.DDProxy,
				{
			 		startDrag:	  naviki.main.RoutingRequest.dd.prototype.startDrag,
			 		endDrag:      naviki.main.RoutingRequest.dd.prototype.endDrag,
			 		setDragElPos: naviki.main.RoutingRequest.dd.prototype.setDragElPos,
			 		onDragOver:   naviki.main.RoutingRequest.dd.prototype.onDragOver,
			 		onDrag:       naviki.main.RoutingRequest.dd.prototype.onDrag,
			 		enableDD:     naviki.main.RoutingRequest.dd.prototype.enableDD,
			 		disableDD:    naviki.main.RoutingRequest.dd.prototype.disableDD
				});		
			
			rec = new naviki.event.Receiver();
			
			eventMgr = new naviki.event.EventMgr();
			eventMgr.onTrackChanged.subscribe(rec.onTrackChanged, "subscribe value");
			
		
			window.onresize = function() {
				eventMgr.onWindowResize.fire(null);
			};

			window.onload = function() {
				eventMgr.onWindowLoad.fire(null);
			};
			
			window.onunload = function() {
				eventMgr.onWindowUnLoad.fire(null);
			};
		}
};
