(function() {	// begin anonymous function

    // define constants
	YAHOO.namespace('Company');
    Company = YAHOO.Company;
	Company.TIME_INTERVAL = 30;
	Company.TIME_HEIGHT = 15;
	Company.ROWS_PER_HOUR = 2;
	
	Company.LOADER = Company.LOADER || new YAHOO.util.YUILoader();
    Company.LOADER.base = Company.YUI_PATH;
	Company.LOADER.require("utilities","container");
	Company.LOADER.onSuccess = function()
	{
    	// Shorthand Notation
    	var Util=YAHOO.util,
    		Dom=Util.Dom,
    		Event=Util.Event,
    		Anim=Util.Anim;
    	
    	/**
    	 * Release objects from memory
    	 * @method Company.Destroy
    	 */
    	Company.Destroy = function()
        {
    		for (var i in this)
    		{
    			if (YAHOO.lang.hasOwnProperty(this, i))
    			{
    				this[i] = null;
    			}
    		} // end for
    	}
    
    	// Load libraries
    	Event.onDOMReady(function() 
    	{
    		// Libraries to load
    		var libraries = [
    			Company.JS_PATH + "analytics.js",
    			Company.JS_PATH + "autocomplete.js",
    			Company.JS_PATH + "calendar.js",
    			Company.JS_PATH + "copy_fields.js",
    			Company.JS_PATH + "edit.js",
    			Company.JS_PATH + "maps.js",
    			Company.JS_PATH + "menu.js",
    			Company.JS_PATH + "more.js",
    			Company.JS_PATH + "orders.js",
                Company.JS_PATH + "scroll.js",
    			Company.JS_PATH + "tabs.js",
    			Company.JS_PATH + "util.js"
    		];
    		
    		// Get utility to load JS
    		YAHOO.util.Get.script(libraries,
    		{  
    			onSuccess: function()
    			{
    				new Company.AutoCompleteManager;
    				new Company.CalendarManager;
    				new Company.Maps.init();
    				new Company.Menu('menu');
    				new Company.More;
    				new Company.Tabs('tabs-js');
                    new Company.Scroll;
    				
    				new Company.Orders.Preview;
    				new Company.Orders.addNote;
    				Company.Orders.util.saveStatus();
    				Company.Orders.util.saveLead();
    				Company.Orders.util.saveReminder();
    				
    				if (Company.startEdit) Company.startEdit();
    				if (Company.startCopy) Company.startCopy();
    				
    				// Utilities
    				Company.util.selectAll();
    				Company.util.setFocus();
    				Company.util.confirmDialog();
    				Company.util.autoTab();
    				Company.util.popUp();
    			} 
    		}); // end get
    
    		// load tooltips
    		var tooltip = Dom.getElementsByClassName('tooltip');
    		if (tooltip.length > 0)
    		{
    			new YAHOO.widget.Tooltip("tooltip", { context:tooltip, width:'250px', autodismissdelay:30000 } );
    		}
    		
    		// show tips
    		var tips = Dom.get('tips');
    		if (tips)
    		{
    			// get height
    			Dom.setStyle(tips, 'visibility', 'hidden');
    			Dom.setStyle(tips, 'position', 'absolute');
    			Dom.setStyle(tips, 'display', 'block');
    			Dom.setStyle(tips, 'height', 'auto');
    
    			var region = Dom.getRegion(tips);
    			height = region.bottom - region.top;
    			
    			// reset styles
    			Dom.setStyle(tips, 'display', '');
    			Dom.setStyle(tips, 'visibility', '');
    			Dom.setStyle(tips, 'position', '');
    			Dom.setStyle(tips, 'height', '0');
    		
                var show = new Anim(tips, { height: { to: height } }, 0.25);
    			show.animate();
    		}
    		
    	}); // end onDOMRead
    	
    	// Release memory on unload
    	Event.on(window, 'unload', Company.Destroy, null, Company);
        
        YAHOO.register("global", Company, {version: "1.0.0", build: "1"});
    
    } // end Loader onSuccess
	
	Company.LOADER.insert();

})();	// end anonymous function