MCEC = function(args) {
    this.config = jQuery.extend(this.config, args);
    this.init(this);
};
MCEC.prototype = {

    config: {
		baseURL: ''
    },

    init: function(refObj) {
		refObj.initMenu(refObj, 'clean_technologies');
		refObj.initMenu(refObj, 'using_clean_energy');
		refObj.initMenu(refObj, 'business_resources');
		refObj.initMenu(refObj, 'research_and_development');
		refObj.initMenu(refObj, 'programs_and_incentives');
		refObj.initMenu(refObj, 'find');
		refObj.initMenu(refObj, 'news_and_events');
		refObj.initSpotlight(refObj);
		//refObj.initPhoneField(refObj);
	},

	initMenu: function(refObj, menuID) {
		var menuitemDiv = $('div#'+menuID);
		var menuitemA = $('div#'+menuID+' a');
		var flyout = $('div#'+menuID+'_flyout');
		var allFlyouts = $('div#menu div.menu_item div.flyout');
		var allMenuItems = $('div#menu div.menu_item a');
		menuitemDiv.mouseenter(function(){
			allFlyouts.hide();
			allMenuItems.removeClass('over');
			flyout.show();
			menuitemA.addClass('over');
		});
		flyout.mouseleave(function(e){
			if ($(e.relatedTarget)[0] != menuitemA[0]) {
				flyout.hide();
				menuitemA.removeClass('over');
			}
		});
	},

	initSpotlight: function(refObj) {
		$('#spotlight div.support').click(function(){document.location = refObj.config.baseURL + 'support'});
		$('#spotlight div.subscribe').click(function(){document.location = refObj.config.baseURL + 'news_and_events/the_current/signup'});
		$('#spotlight div.register').click(function(){document.location = refObj.config.baseURL + 'user/register'});
	},

	initPhoneField: function(refObj) {
		var field = $('#edit-field-phone-0-value');
		if (field) {
			var areaCode = $('<input id="edit-field-phone-0-value-areaCode" class="form-text" type="text" value="" size="3" maxlength="3" />').keydown(function(e){refObj.phoneFieldKeyDownHandler(refObj, e);});
			var firstThree = $('<input id="edit-field-phone-0-value-firstThree" class="form-text" type="text" value="" size="3" maxlength="3" />');
			var lastFour = $('<input id="edit-field-phone-0-value-lastFour" class="form-text" type="text" value="" size="4" maxlength="4" />');
			field.hide().before(areaCode).before(firstThree).before(lastFour);
		}
	},

	phoneFieldKeyDownHandler: function(refObj, e){
		if (!(
			(e.keyCode >= 48 && e.keyCode <= 57) // allow numerics
			|| e.keyCode == 8 // allow backspace
			|| e.keyCode == 9 // allow tab
			|| (e.keyCode >= 37 && e.keyCode <= 40) // allow moving with arrows
		)) {
			e.preventDefault();
		} else {
			switch (e.keyCode) {
				case 9: // tab handler
					e.preventDefault();
					break;
			}
		}
	},

    spinnerIds: [],

    addSpinner: function(refObj, element, replace) {
        refObj.log('addSpinner');
        var element = jQuery(element);
        var spinnerId = new Date().getTime();
        if (replace) {
            var original = element.replaceWith('<img id="spinner' + spinnerId + '" src="/Portals/0/Assets/img/ajax-loader.gif" />');
            refObj.spinnerIds[spinnerId] = element;
        } else {
            element.append('<img id="spinner' + spinnerId + '" src="/Portals/0/Assets/img/ajax-loader.gif" />');
            refObj.spinnerIds[spinnerId] = jQuery('#spinner' + spinnerId);
        }

        return spinnerId;
    },

    removeSpinner: function(refObj, spinnerId, restore) {
        refObj.log('removeSpinner');
        if (restore) {
            jQuery('#spinner' + spinnerId).replaceWith(jQuery(refObj.spinnerIds[spinnerId]));
        } else {
            jQuery('#spinner' + spinnerId).remove();
        }
        refObj.spinnerIds.splice(spinnerId,1);
    },

    log: function() {
        if (window.console !== undefined) {
            console.log(arguments);
        }
    }
};
