var window_loaded = false;
var states = {
    "Alabama":"AL",
    "Alaska":"AK",
    "American Samoa":"AS",
    "Arizona":"AZ",
    "Arkansas":"AR",
    "California":"CA",
    "Colorado":"CO",
    "Connecticut":"CT",
    "Delaware":"DE",
    "District of Columbia":"DC",
    "Florida":"FL",
    "Georgia":"GA",
    "Guam":"GU",
    "Hawaii":"HI",
    "Idaho":"ID",
    "Illinois":"IL",
    "Indiana":"IN",
    "Iowa":"IA",
    "Kansas":"KS",
    "Kentucky":"KY",
    "Louisiana":"LA",
    "Maine":"ME",
    "Maryland":"MD",
    "Massachusetts":"MA",
    "Michigan":"MI",
    "Minnesota":"MN",
    "Mississippi":"MS",
    "Missouri":"MO",
    "Montana":"MT",
    "Nebraska":"NE",
    "Nevada":"NV",
    "New Hampshire":"NH",
    "New Jersey":"NJ",
    "New Mexico":"NM",
    "New York":"NY",
    "North Carolina":"NC",
    "North Dakota":"ND",
    "Northern Marianas Islands":"MP",
    "Ohio":"OH",
    "Oklahoma":"OK",
    "Oregon":"OR",
    "Pennsylvania":"PA",
    "Puerto Rico":"PR",
    "Rhode Island":"RI",
    "South Carolina":"SC",
    "South Dakota":"SD",
    "Tennessee":"TN",
    "Texas":"TX",
    "Utah":"UT",
    "Vermont":"VT",
    "Virginia":"VA",
    "Virgin Islands":"VI",
    "Washington":"WA",
    "West Virginia":"WV",
    "Wisconsin":"WI",
    "Wyoming":"WY"
};
Event.observe(window, 'load', function() {
    window_loaded = true;
});

Memberfuse = {
    init: function(parent){
        Memberfuse.attachEventObservers(parent);
        Memberfuse.fadeElements(parent);
        Memberfuse.WndManager.attachWnds(parent);
        Memberfuse.attachAjaxTooltips();
        Memberfuse.initFormMessages();
        Memberfuse.clearAllTooltips();
    },
    attachEventObservers: function(parent){
        //Memberfuse.attachEventObserver('asyncForm','submit',Memberfuse.Forms.asyncFormSubmit,parent);
        Memberfuse.attachEventObserver('asyncAction','click',Memberfuse.asyncActionClick,parent);
        Memberfuse.attachEventObserver('calendar','click',Memberfuse.calendarClick,parent);
        Memberfuse.attachEventObserver('cal_link','click',Memberfuse.calendarClick,parent);
        Memberfuse.attachEventObserver('CtrlExpander','click',Memberfuse.expanderClick,parent);
        Memberfuse.attachEventObserver('saveitem_btn','click',Memberfuse.savebtnClick,parent);
        if (!window_loaded) {
            /* If window is not yet loaded, wait before triggering wysiwyg */
            Event.observe(window, 'load', function() {
                Memberfuse.wysiwyg();
            });
        } else {
            /* Window is already loaded, trigger wysiwyg */
            /* Most-likely this case is triggered when an ajax call completes */
            Memberfuse.wysiwyg();
        }
    },
    attachEventObserver: function(className,event,observer,parent){
        if(parent){
            if(Object.isElement(parent)){
                $A($(parent).getElementsByClassName(className)).each(function(e){
                    e.observe(event,observer);
                });
            }
        }
        else{
            $$('.' + className).each(function(e){
                e.observe(event,observer);
            });
        }
    },
    fadeElements: function(parent){
        if(parent){
            if(Object.isElement(parent)){
                $A($(parent).getElementsByClassName('fade')).each(function(e){
                    e.fade({
                        duration: 3.0,
                        delay: 3.0
                    });
                });
            }
        }
        else{
            $$('.fade').each(function(e){
                e.fade({
                    duration: 3.0,
                    delay: 3.0
                });
            });
        }
    },
    asyncActionClick: function(event){
        element = event.element();
        while(!element.href ||  element.tagName != 'A'){
            element = $(element.up());
            if(!element){
                return;
            }
        }
        new Ajax.Request(element.href,{
            element: $(element),
            onException: function(requestor,exception){
                alert(exception);
            },
            onFailure: function(request,json){
                alert('There was a problem processing the request');
            }
        });
        event.stop();
    },
    calendarClick: function(event)
    {
        element = event.element();
        while(!element.href ||  element.tagName != 'A')
        {
            element = $(element.up());
            if(!element)
            {
                return;
            }
        }

        if(!$('calendar'))
        {
            var caldiv = document.createElement('div');
            caldiv.setAttribute('id','calendar');
            document.body.appendChild(caldiv);
        }

        var calendar = new CalendarPopup("calendar");
        calendar.select($(element.rel),element.id,'MM/dd/yyyy');
        return false;
        event.stop();
    },
    savebtnClick: function(event)
    {
        element = event.element();
        while(!element.href ||  element.tagName != 'A')
        {
            element = $(element.up());
            if(!element)
            {
                return;
            }
        }
        var parent_div = element.up();
        parent_div.innerHTML = '<img src="/themes/global/default/normal/images/icons/ajax_loading_icon.gif" />';
        new Ajax.Request(element.href,{
            element: $(element),
            onException: function(requestor,exception){
                alert(exception);
            },
            onFailure: function(request,json){
                alert('There was a problem processing the request');
            },
            onSuccess: function(transport){
                parent_div.innerHTML = '<a><img src="/themes/global/default/normal/images/icons/redstar_16.png" class="icon" /></a>';
            }
        });
        event.stop();
    },
    expanderClick: function(event)
    {
        element = event.element().up().down('ul');
        if(element)
        {
            if (element.visible() == true) {
                event.element().innerHTML = '+';
            } else {
                event.element().innerHTML = '&ndash;';
            }
            Effect.toggle(element, 'slide', {
                duration: 0.2
            });
        }
        event.stop();
    },
    clearAllTooltips:function()
    {
        $$('.tooltip').each(function(element) {
            element.hide();
        });
    },
    clearAllParentTitles:function(element)
    {
        elements = element.ancestors();
        for(var x=0;x<elements.length;x++) {
            if (elements[x].title.length > 0) {
                elements[x].title = '';
            }
        }
    },
    attachAjaxTooltips:function()
    {
        var obj = $$('.AjaxTip');

        if(obj.length > 0)
        {
            for(var i in obj)
            {

                obj[i].onmouseover = AjaxTip.getContent;
                obj[i].onmouseout = AjaxTip.clear;
                obj[i].onmousemove = AjaxTip.updatePosition;
            }

            if(!$('ajaxTip'))
            {
                var tooltipdiv = document.createElement('div');
                tooltipdiv.setAttribute('id','ajaxTip');
                tooltipdiv.className = '';
                tooltipdiv.style.cssText = 'display: none;position: absolute;z-index: 1000;top:100;left:100;';

                var tt_content = '';
                tt_content += '<img src="/images/loading.gif" alt="loading" style="display: block; margin: auto;" />';

                tooltipdiv.innerHTML = tt_content;

                document.body.appendChild(tooltipdiv);
            }
        }
    },
    initFormMessages:function()
    {
        $$('.form_heading a.close').each(function(e){
            e.observe('click',function(e2){
                e.up().up().up().fade({
                    duration:0.3
                });
            });
        });
    },
    setPageMessage:function setPageMessage (text, cssClass, fade)
    {
        if(typeof cssClass == 'undefined')
        {
            cssClass = 'success';
        }

        if(typeof fade == 'undefined')
        {
            fade = true;
        }

        $('pageMessage').innerHTML = '<div id="appMessage" class="appMessage ' + cssClass + '">' + text + '</div>';

        if(fade == true)
        {
	    /*$('appMessage').fade({delay: 3.0});*/
	    }
        jQuery('#pageMessage').attr('tabindex',-1).focus();
    },
    clearPageMessage:function setPageMessage ()
    {
        $('pageMessage').innerHTML = '';
    },

    /**
	 * Performs post-member-featuring actions. On the member list page this
	 * means updating the member row. On the member profile pages it means
	 * changing the text and target of the feature member link.
	 **/
    postMemberFeature: function(user_id)
    {
        var row = $('user_' + user_id);
        if(row)
        {
            this.refreshAdminMemberDirectoryRow(user_id);
        }
        else
        {
            this.switchFeatureLink(user_id);
        }
    },

    /**
	 * Changes the "feature member" link to "unfeature member" and vice versa.
	 * Also sets a state on the modal window so that it will reload remote content
	 * if it is needed again.
	 **/
    switchFeatureLink: function(user_id)
    {
    	var link = jQuery('a.feature_link');
    	var span = link.find('span');
    	var featured = true;
    	if (span.text().search(/unfeature/i) != -1) {
    		featured = false;
    	}
    	console.log(link);
    	if (featured) {
    		span.html('Unfeature Member');
    		link.attr('href', '/members/admin/featuremember/id/'+user_id+'/set/0');
    		link.attr('title', 'Unfeature Member');
    	} else {
    		span.html('Feature Member');
    		link.attr('href', '/members/admin/featuremember/id/'+user_id+'/set/1');
    		link.attr('title', 'Feature Member');
    	}
    	link.attr('original-title', '');
    	
//        var window_dom  = jQuery(".confirmbox.ctrlCntr:not([style*='diplay: none;'])");
//        var window_id = window_dom[0].id;
//        var window      = Memberfuse.WndManager.windows.get(window_id);
//        var link        = jQuery('.feature_link');
//        var link_text   = jQuery('.feature_link span');
//        var title_text  = jQuery('#'+window_id+' h2');
//        var text        = link_text.text();
//        var unfeaturing = text.search('unfeature');
//        window.remoteContentLoaded = false;
//		
//        if(unfeaturing !== -1)
//        {
//            text = text.replace('unfeature', 'feature');
//            link.attr("href", '/members/admin/featuremember/id/'+user_id+'/set/1');
//            window.href = '/members/admin/featuremember/id/'+user_id+'/set/1';
//            link.attr("title", text);
//            title_text.text(text);
//            link_text.text(text);
//        }
//        else
//        {
//            link.attr("href", '/members/admin/featuremember/id/'+user_id+'/set/0');
//            window.href = '/members/admin/featuremember/id/'+user_id+'/set/0';
//            link.attr("title", 'un'+text);
//            title_text.text('un'+text);
//            link_text.text('un'+text);
//        }
    	
    },

    refreshAdminMemberDirectoryRow: function(user_id, action)
    {
        var row = $('user_' + user_id);
        if(row)
        {

            if(action == 'activate')
            {
                row.removeClassName('deactivated').addClassName('activated');
            }

            if(action == 'deactivate')
            {
                row.removeClassName('activated').addClassName('deactivated');
            }

            new Ajax.Updater('user_' + user_id, '/members/admin/getdirectoryrow/id/' + user_id,{
                onComplete:function(){
                    Memberfuse.init($('user_' + user_id));
                }
            });
        }
    },
    refreshAdminGroupDirectoryRow: function(group_id, action)
    {
        var row = $('group_' + group_id);
        
        if (row)
       	{
            if(action == 'activate')
            {
                row.removeClassName('deactivated').addClassName('activated');
            }

            if(action == 'deactivate')
            {
                row.removeClassName('activated').addClassName('deactivated');
            }

            new Ajax.Updater('group_' + group_id, '/groups/admin/getdirectoryrow/id/' + group_id,{
                onComplete:function(){
                    Memberfuse.init($('group_' + group_id));
                    row.className = newClass;
                }
            });	
       	}
    },    
    refreshAdminEventDirectoryRow: function(event_id, action)
    {
        var row = $('event_' + event_id);

        if(action == 'activate')
        {
            row.removeClassName('deactivated').addClassName('activated');
        }

        if(action == 'deactivate')
        {
            row.removeClassName('activated').addClassName('deactivated');
        }

        new Ajax.Updater('event_' + event_id, '/events/admin/geteventrow/id/' + event_id,{
            onComplete:function(){
                Memberfuse.init($('event_' + event_id));
            }
        });
    },
    refreshAdminEventcalDirectoryRow: function(event_id, action)
    {
        var row = $('event_' + event_id);
        
        if(action == 'activate')
        {
            row.removeClassName('deactivated').addClassName('activated');
        }

        if(action == 'deactivate')
        {
            row.removeClassName('activated').addClassName('deactivated');
        }

        new Ajax.Updater('event_' + event_id, '/eventcal/admin/geteventrow/id/' + event_id,{
            onComplete:function(){
                Memberfuse.init($('event_' + event_id));
            }
        });
    },
    /**
	 * Performs post-resource-featuring actions. On the resource list page this
	 * means updating the resource row. On the resources pages it means
	 * changing the text and target of the feature member link.
	 **/
    postResourceFeature: function(resource_id)
    {
        if(/admin/.test(window.location))
        {
            this.refreshAdminResourceDirectoryRow(resource_id);
        }
        else
        {
            this.switchFeatureResourceLink(resource_id);
        }
    },

    /**
	 * Changes the "feature resource" link to "unfeature resource" and vice versa.
	 **/
    switchFeatureResourceLink: function(resource_id)
    {
    	// THIS IS STUPIDITY AT ITS FINEST
        // trickery to get the .confirmbox that
//        var window_dom  = jQuery(".confirmbox.ctrlCntr:not([style*='diplay: none;'])");
//        console.log(window_dom);
//        var window_id = window_dom[0].id;
//        var window      = Memberfuse.WndManager.windows.get(window_id);
//
//        var link        = jQuery('.feature_link a');
//        var text_link   = link.text();
//        var unfeatured  = text_link.search(/Unfeature/i);
    	
    	var link  = jQuery('#resource_'+resource_id).find('.feature_link a');
    	var unfeatured = link.text().search(/Unfeature/i);
    	if (unfeatured === -1)
        {
            link.text('Unfeature').attr("href",'/resources2/admin/featureresource/id/' + resource_id + '/set/0');
            //window.href = '/resources2/admin/featureresource/id/' + resource_id + '/set/0';
        }
        else
        {
            link.text('Feature').attr("href",'/resources2/admin/featureresource/id/' + resource_id + '/set/1');
            //window.href = '/resources2/admin/featureresource/id/' + resource_id + '/set/1';
        }
        //window.remoteContentLoaded = false;

    },
    refreshAdminResourceDirectoryRow: function(resource_id)
    {
        var row         = jQuery('resource_' + resource_id);
        
        if (row.hasClass('activated'))
        {
            row.removeClass('activated').addClass('deactivated');
        }
        else
        {
            row.removeClass('deactivated').addClass('activated');
        }

        new Ajax.Updater('resource_' + resource_id, '/resources/admin/getdirectoryrow/id/' + resource_id,{
            onComplete:function(){
                Memberfuse.init($('resource_' + resource_id));
                row.className = newClass;
            }
        });
    },
    refreshAdminGroupCategoryRow: function(category_id)
    {
        var row = $('category_' + category_id);
        var classSplit = new String(row.className).split(' ');
        var newClass = '';
        var i;

        for(i = 0; i<classSplit.length; i++)
        {
            if(classSplit[i] == 'deactivated')
            {
                newClass += ' activated';
            }
            else if(classSplit[i] == 'activated')
            {
                newClass += ' deactivated';
            }
            else
            {
                newClass += ' ' + classSplit[i];
            }
        }

        new Ajax.Updater('category_' + category_id, '/groups/admin/getcategoryrow/id/' + category_id,{
            onComplete:function(){
                Memberfuse.init($('category_' + category_id ) );
                row.className = newClass;
            }
        });
    },
    bulkActivate: function()
    {
        var checkboxes = $$(".adminMemberDirectoryCheckBox");
        var ids = '';
        var comma = '';
        var i;

        for(i = 0; i<checkboxes.length; i++)
        {
            if(checkboxes[i].checked)
            {
                ids += comma + checkboxes[i].getAttribute('rel');
                comma = ',';
            }
        }

        var uri = '/members/admin/bulkactivate';

        if($('all').value == 'yes')
        {
            uri = uri + '?all=' + $('all').value;
        }
        else
        {
            uri = uri + '?ids=' + ids;
        }

        new Ajax.Request(uri,
        {
            onComplete: function(transport)
            {
                if(transport.responseText == 'success')
                {
                    var idSplit = new String(ids).split(',');

                    for(i = 0; i<idSplit.length; i++)
                    {
                        Memberfuse.refreshAdminMemberDirectoryRow(idSplit[i], 'activate');
                    }

                    Memberfuse.setPageMessage('The members have been activated.');
                }
                else
                {
                    Memberfuse.setPageMessage('There was an error activating the members.', 'error');
                }
            }
        }
        );

        return true;
    },
    bulkDeactivate: function()
    {
        var checkboxes = $$(".adminMemberDirectoryCheckBox");
        var ids = '';
        var comma = '';
        var i;

        for(i = 0; i<checkboxes.length; i++)
        {
            if(checkboxes[i].checked)
            {
                ids += comma + checkboxes[i].getAttribute('rel');
                comma = ',';
            }
        }

        var uri = '/members/admin/bulkdeactivate';

        if($('all').value == 'yes')
        {
            uri = uri + '?all=' + $('all').value;
        }
        else
        {
            uri = uri + '?ids=' + ids;
        }

        new Ajax.Request(uri,
        {
            onComplete: function(transport)
            {
                if(transport.responseText == 'success')
                {
                    var idSplit = new String(ids).split(',');

                    for(i = 0; i<idSplit.length; i++)
                    {
                        Memberfuse.refreshAdminMemberDirectoryRow(idSplit[i], 'deactivate');
                    }

                    Memberfuse.setPageMessage('The members have been deactivated.');
                }
                else
                {
                    Memberfuse.setPageMessage('There was an error deactivating the members.', 'error');
                }
            }
        }
        );

        return true;
    },
    bulkDelete: function()
    {
        var checkboxes = $$(".adminMemberDirectoryCheckBox");
        var ids = '';
        var comma = '';
        var i;

        for(i = 0; i<checkboxes.length; i++)
        {
            if(checkboxes[i].checked)
            {
                ids += comma + checkboxes[i].getAttribute('rel');
                comma = ',';
            }
        }

        new Ajax.Request('/members/admin/bulkdelete?ids=' + ids,
        {
            onComplete: function(transport)
            {
                if(transport.responseText == 'success')
                {
                    var idSplit = new String(ids).split(',');

                    for(i = 0; i<idSplit.length; i++)
                    {
                        $("user_" + idSplit[i]).fade();
                    }

                    Memberfuse.setPageMessage('The members have been deleted.');
                }
                else
                {
                    Memberfuse.setPageMessage('There was an error deleting the members.', 'error');
                }
            }
        }
        );
    },
    bulkMessage: function()
    {
        if($('all').value == 'no')
        {
            var checkboxes = $$(".adminMemberDirectoryCheckBox");
            var ids = '';
            var comma = '';
            var i;

            for(i = 0; i<checkboxes.length; i++)
            {
                if(checkboxes[i].checked)
                {
                    ids += comma + checkboxes[i].getAttribute('rel');
                    comma = ',';
                }
            }

            var mass_msg_links = $$(".massmessage");

            for(i = 0; i<mass_msg_links.length; i++)
            {
                mass_msg_links[i].href = '/members/admin/bulkmessage/ids/' + ids;
            }
        }

        return true;
    },
    bulkContactMessage: function()
    {
        if($('all').value == 'no')
        {
            var checkboxes = $$(".adminMemberDirectoryCheckBox");
            var ids = '';
            var comma = '';
            var i;

            for(i = 0; i<checkboxes.length; i++)
            {
                if(checkboxes[i].checked)
                {
                    ids += comma + checkboxes[i].getAttribute('rel');
                    comma = ',';
                }
            }

            var mass_msg_links = $$(".massmessage");

            for(i = 0; i<mass_msg_links.length; i++)
            {
                mass_msg_links[i].href = '/messaging/compose/index/cmd/to/user/' + ids;
            }
        }

        return true;
    },
    checkAllBoxes: function(boxClass, number)
    {
        var checkboxes = $$("." + boxClass);

        for(i = 0; i<checkboxes.length; i++)
        {
            checkboxes[i].checked = true;
        }

        $('check').hide();
        $('uncheck').show();
        //		$('all').setAttribute('onclick', 'Memberfuse.uncheckAllBoxes("' + boxClass + '");');
        Memberfuse.setPageMessage('All members on this page are selected.  <a href="javascript:void(0);" onclick="Memberfuse.selectAllMembers(\'' + boxClass + '\', \'' + number + '\');">Select all ' + number + ' members in the community.</a>', 'info', false);
    },
    uncheckAllBoxes: function(boxClass)
    {
        var checkboxes = $$("." + boxClass);
        Memberfuse.clearPageMessage();
        for(i = 0; i<checkboxes.length; i++)
        {
            checkboxes[i].checked = false;
        }
        $('uncheck').hide();
        $('check').show();
    //		$('all').setAttribute('onclick', 'Memberfuse.checkAllBoxes("' + boxClass + '");');
    },
    checkAllContactBoxes: function(boxClass, number)
    {
        var checkboxes = $$("." + boxClass);

        for(i = 0; i<checkboxes.length; i++)
        {
            checkboxes[i].checked = true;
        }

        //		$('all').setAttribute('onclick', 'Memberfuse.uncheckAllBoxes("' + boxClass + '");');
        Memberfuse.setPageMessage('All contacts on this page are selected.  <a href="javascript:void(0);" onclick="Memberfuse.selectAllContactMembers(\'' + boxClass + '\', \'' + number + '\');">Select all ' + number + ' members in the community.</a>', 'info', false);
    },
    selectAllMembers: function(boxClass, number)
    {
        Memberfuse.setPageMessage('All ' + number + ' members in the community are selected.  <a href="javascript:void(0);" onclick="Memberfuse.deselectAllMembers(\'' + boxClass + '\');">Clear selection.</a>', 'info', false);
        $('all').value = 'yes';

        var mass_msg_links = $$(".massmessage");

        for(i = 0; i<mass_msg_links.length; i++)
        {
            mass_msg_links[i].href = '/members/admin/bulkmessage/ids/all';
        }
    },
    selectAllContactMembers: function(boxClass, number)
    {
        Memberfuse.setPageMessage('All ' + number + ' contacts are selected.  <a href="javascript:void(0);" onclick="Memberfuse.deselectAllMembers(\'' + boxClass + '\');">Clear selection.</a>', 'info', false);
        $('all').value = 'yes';

        var mass_msg_links = $$(".massmessage");

        for(i = 0; i<mass_msg_links.length; i++)
        {
            mass_msg_links[i].href = '/messaging/compose/index/cmd/toallcontact';
        }
    },
    deselectAllMembers: function(boxClass)
    {
        Memberfuse.uncheckAllBoxes(boxClass);
        Memberfuse.clearPageMessage();
        $('all').value = 'no';

        var mass_msg_links = $$(".massmessage");

        for(i = 0; i<mass_msg_links.length; i++)
        {
            mass_msg_links[i].href = '/members/admin/bulkmessage';
        }
    },
    resetChecks: function(boxClass)
    {
        Memberfuse.clearPageMessage();
        $('uncheck').hide();
        $('check').show();

    },
    wysiwyg: function()
    {
        if (typeof tinyMCE == 'object') {

            /**
			 * Remove any existing instances and re-init to prevent multiple-inits
			 */
            $$('textarea.mceeditor').each(function (element) {
                if (element.id && $(element.id + '_parent')) {
                    tinyMCE.getInstanceById(element.id).remove();
                }
            });

            tinyMCE.init({
                mode : "specific_textareas",
                editor_selector : "memfuzeEditor-empty",
                theme: "advanced",
                plugins: "spellchecker,paste",
                theme_advanced_buttons1 : "",
                theme_advanced_buttons2 : "",
                theme_advanced_buttons3 : "",
                theme_advanced_toolbar_location : "top",
                theme_advanced_toolbar_align : "left",
                theme_advanced_statusbar_location : "",
                theme_advanced_resizing : true,
                content_css: "/themes/global/default/css/forms.css",
                skin: "defaultSkin no", /* hides the toolbar */
                convert_urls: false,
                relative_urls: false
            });

            tinyMCE.init({
                mode : "specific_textareas",
                editor_selector : "memfuzeEditor-wiki",
                theme: "advanced",
                theme: "advanced",
                plugins: "spellchecker,paste,fullscreen,mfimages,media",
                theme_advanced_buttons1 : "formatselect,|,pastetext,pasteword,|,bold,italic,underline,|,bullist,numlist,|,link,unlink,|,forecolor,backcolor,|,spellchecker,fullscreen,image,media",
                theme_advanced_buttons2 : "",
                theme_advanced_buttons3 : "",
                theme_advanced_toolbar_location : "top",
                theme_advanced_toolbar_align : "left",
                theme_advanced_statusbar_location : "bottom",
                theme_advanced_resizing : true,
                content_css: "/themes/global/default/css/forms.css",
                convert_urls: false,
                relative_urls: false,
                file_browser_callback : 'mfimage_filebrowser'                    
            });
            
            tinyMCE.init({
                mode : "specific_textareas",
                editor_selector : "memfuzeEditor-dblrow",
                theme: "advanced",
                theme: "advanced",
                plugins: "spellchecker,paste,fullscreen,mfimages,media",
                theme_advanced_buttons1 : "formatselect,|,pastetext,pasteword,|,bold,italic,underline,|,bullist,numlist,|,link,unlink,|,forecolor,backcolor,spellchecker",
                theme_advanced_buttons2 : "fullscreen,image,media",
                theme_advanced_buttons3 : "",
                theme_advanced_toolbar_location : "top",
                theme_advanced_toolbar_align : "left",
                theme_advanced_statusbar_location : "bottom",
                theme_advanced_resizing : true,
                content_css: "/themes/global/default/css/forms.css",
                convert_urls: false,
                relative_urls: false,
                file_browser_callback : 'mfimage_filebrowser'                    
            });

            tinyMCE.init({
                mode : "specific_textareas",
                editor_selector : "memfuzeEditor-event",
				theme: "advanced",
				plugins: "spellchecker,paste,linkautodetect,fullscreen,mfimages",
				theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,paste,pastetext,pasteword,|,bullist,numlist,|,link,unlink,|,outdent,indent,|,spellchecker,|,fullscreen,|,image",
				theme_advanced_buttons2 : "",
				theme_advanced_buttons3 : "",
				theme_advanced_toolbar_location : "top",
				theme_advanced_toolbar_align : "left",
				theme_advanced_statusbar_location : "",
				theme_advanced_resizing : false,
				content_css: "/themes/global/default/css/forms.css",
				convert_urls: false,
				relative_urls: false,
                file_browser_callback : 'mfimage_filebrowser'
                    
            });
            
            tinyMCE.init({
                mode : "specific_textareas",
                editor_selector : "memfuzeEditor-wiki-nopaste",
                theme: "advanced",
                theme: "advanced",
                plugins: "spellchecker,fullscreen,mfimages",
                theme_advanced_buttons1 : "formatselect,|,bold,italic,underline,|,bullist,numlist,|,link,unlink,|,forecolor,backcolor,|,spellchecker,fullscreen,image",
                theme_advanced_buttons2 : "",
                theme_advanced_buttons3 : "",
                theme_advanced_toolbar_location : "top",
                theme_advanced_toolbar_align : "left",
                theme_advanced_statusbar_location : "bottom",
                theme_advanced_resizing : true,
                content_css: "/themes/global/default/css/forms.css",
                convert_urls: false,
                relative_urls: false,
                file_browser_callback : 'mfimage_filebrowser'
            });
            

            if ((typeof window['Memberfuse_wysiwyg_init'] == 'function')) {
                Memberfuse_wysiwyg_init();
            }

            /* TinyMCE has trouble posting information when rendered in a modal box, this fixes it*/
            $$('form input[type="submit"]').each(function(element) {
                Event.stopObserving(element, 'click', Memberfuse.wysiwygSave); /* Prevent multiple event handlers from being attached */
                Event.observe(element, 'click', Memberfuse.wysiwygSave);
            });
        }
    },
    wysiwygSave: function () {
        tinyMCE.triggerSave();
    },
    switchWidget: function(widget_id)
    {
        $$(".middle_widgets").each(function(e){
            e.hide();
            $(e.id + "_tab").removeClassName("active");
        });

        $(widget_id).show();
        $(widget_id + "_tab").addClassName("active");
    },
    open_modal_box: function(header,action)
    {
    	j = jQuery.noConflict();
    	
    	j('#modal-dialog').dialog({
    		zIndex : 999999,
    		width : 'auto',
    		height : 'auto',
    		modal : true,
    		create : function(event, ui) {
    			console.log(action);
    			j.ajax({
    				url : action,
    				success : function(data) {
    					j(event.target).html(data);
    				},
    				async : false
    			});
    		},
    		title : header
    	});
    	
    	
//        var modal_top = new Element('div',{
//            className: 'top'
//        });
//        var closeLnk = new Element('a');
//
//        closeLnk.onclick = function(){
//            Memberfuse.WndManager.closeWindow(this);
//        };
//        closeLnk.insert('Close');
//        modal_top.insert(closeLnk);
//
//        var title = new Element('h1');
//        title.insert(header);
//        modal_top.insert(title);
//
//        var modal_middle = new Element('div',{
//            className: 'middle'
//        });
//        var modal_bottom = new Element('div',{
//            className: 'bottom'
//        });
//
//        //start with the default options
//        var options = {
//            className: 'modalbox',
//            closeOnClick: 'overlay',
//            insertRemoteContentAt: modal_middle,
//            fade: true,
//            fadeDuration: 0.15,
//            reloadContent: true,
//            id: 'bob'
//        };
//
//        options.className += ' ctrlCntr';
//        options.afterInitialize = Memberfuse.WndManager.indexWnd;
//        options.onRemoteContentLoaded = Memberfuse.WndManager.initWndContent;
//
//        var pop = document.createElement('a');
//        pop.setAttribute('id', 'modal_pop');
//        pop.setAttribute('href',action);
//
//        ctrl = Control.Modal.open(pop, options);
//
//        ctrl.container.insert(modal_top);
//        ctrl.container.insert(modal_middle);
//        ctrl.container.insert(modal_bottom);
    },
    facebook_on_login: function()
    {
        if($('fb-link') && $('fb_ajax_icon'))
        {
            $('fb-link').hide();
            $('fb_ajax_icon').show();
        }

        new Ajax.Request('/facebookconnect/index/auth',
        {
            onComplete: function(transport)
            {
                var response = transport.responseText;

                if(response == '200')
                {
                    new Ajax.Request('/facebookconnect/index/getredirect',
                    {
                        onSuccess: function(transport)
                        {
                            var response = transport.responseText;
                            window.location = response;
                        },
                        onFailure: function(transport)
                        {
                            window.location = '/';
                        }
                    });
                }
                else if(response == '101')
                {
                    Memberfuse.setPageMessage('It appears that your Facebook account is not linked to your community account yet.  Login and go to <a href="/settings">your settings</a> to set this up.', 'error');
                    $('fb-link').show();
                    $('fb_ajax_icon').hide();
                }
                else if(response == '201')
                {
                    Memberfuse.open_modal_box('Permanently Link Account?','/facebookconnect/index/linkaccount');
                }
                else if(response == '210')
                {
                    Memberfuse.open_modal_box('Permanently Link Account?','/facebookconnect/index/suggestaccount');
                }
            }
        }
        );
    },
    facebook_on_link: function()
    {
        Memberfuse.facebook_on_login();
    },
    facebook_on_logout: function()
    {
        window.location = '/login/logout';
    },
    facebook_on_register: function()
    {
        var fb_user = FB.Connect.get_loggedInUser();

        FB.Facebook.apiClient.users_getInfo([fb_user],['first_name','last_name','current_location'],
            function(info,ex)
            {
                Memberfuse.open_modal_box('Facebook Connect','/facebookconnect/index/registerinstructions');

                $('firstname').value = info[0]['first_name'];
                $('lastname').value = info[0]['last_name'];
                $('city').value = info[0]['current_location']['city'];
                $('state').value = states[info[0]['current_location']['state']];
            }
            );
    },
    refreshPermissionTable: function()
    {
        var checkboxes = $$(".edituserrolescheckbox");
        var ids = '';
        var comma = '';
        var i;

        for(i = 0; i<checkboxes.length; i++)
        {
            if(checkboxes[i].checked)
            {
                ids += comma + checkboxes[i].getAttribute('name');
                comma = ',';
            }
        }

        new Ajax.Updater('permissiontable', '/members/admin/getuserpermissiontable/userid/' + $("acl_user_id").value + '/roles/' + ids);
    },
    createCookie: function (name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    },
    readCookie: function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    },
    eraseCookie: function (name) {
        createCookie(name,"",-1);
    },
    resetConnection: function () {
        new Ajax.Request('/safarifix.php',{
            asynchronous:false
        });
    },
    initProgressBar: function (id,iframe,form,callback_url) {
        var progress_bar = new Control.ProgressBar(id,{
            afterChange: function(value,active)
            {
                var error_container = $(form.id + '_' + 'messagePlaceholder');

                try
                {
                    if(value > 0)
                    {
                        $('progress_percent').show();
                        $('progress_percent').innerHTML = value + '%';
                    }

                    if(value == '100')
                    {
                        $(id).hide();
                        $('progress_percent').innerHTML = '';
                    }
                }
                catch(e)
                {
                    error_container.insert('<div class="formMessage error">There was an error processing the upload response: ' + e.message + '</div>');
                }
            }
        });
        $(id).show();
        //$('file_field').hide();
        if ($('progress_key')) {
        	progress_bar.poll('/upload/getprogress/id/' + $('progress_key').value);
        }
        setTimeout(function() {
            if (progress_bar.active) {
                progress_bar.stop();
                $(form.id + '_' + 'messagePlaceholder').insert('<div class="formMessage error">There was a problem uploading your photo. Please try again.</div>');
            }
        }, 10000);
    },
    startCropper: function(upload_results) {
        var error_container = $('uploadform_' + 'messagePlaceholder');
        if(upload_results['status'])
        {
            var token = upload_results['token'];

            if(typeof processupload == 'function')
            {
                processupload(token);
            }
        }
        else
        {
            var errors = upload_results['messages'];
            error_container.innerHTML = '';

            for( var i=0 ; i<errors.length; i++ )
            {
                error_container.insert('<div class="formMessage error">' + errors[i] + '</div>');
            }
        }
    },

    displayUploadedImage: function(containerId, hideContainerId, token, imageIdentifier) {
        $('progress_bar').hide();
        new Ajax.Request('/styler/upload/getuploadedimagepreviewform/token/' + token + '/image_identifier/' + imageIdentifier,{
            method: 'get',
            onSuccess: function(transport) {
                $(containerId).update(transport.responseText);
                $(hideContainerId).hide();
                $(containerId).show();
            }
        });
    },

    displayUploadedImageError: function(containerId, hideContainerId, imageIdentifier) {
        $('progress_bar').hide();
        new Ajax.Request('/styler/upload/getuploadedimageerror/imageIdentifier/' + imageIdentifier,{
            method: 'get',
            onSuccess: function(transport) {
                $(containerId).update(transport.responseText);
                $(hideContainerId).hide();
                $(containerId).show();
            }
        });
    },

    initImageCropper: function(ratio_w,ratio_h,minWidthDefault,minHeightDefault){
    	minWidthDefault = typeof(minWidthDefault) != 'undefined' ? minWidthDefault : 120;
    	minHeightDefault = typeof(minHeightDefault) != 'undefined' ? minHeightDefault : 120;
    	
    	var img = jQuery('#tmp_slide_img');
    	img.Jcrop({
    		bgColor: 'clear',
    		minSize:[minWidthDefault, minHeightDefault],
			setSelect: [0,0,minWidthDefault,minHeightDefault],
    		onChange: showPreview,
    		onSelect: showPreview,
    		aspectRatio: 1
    	});
    	
    	var img_preview = jQuery('<img id="cropper_preview_image"/>');
    	img_preview.attr('src',img.attr('src')).width(img.width());
    	jQuery('#preview_img').attr('style','overflow:hidden;').width(minWidthDefault).height(minHeightDefault).append(img_preview);
//        new Cropper.ImgWithPreview(
//            'tmp_slide_img',
//            {
//                previewWrap: 'preview_img',
//                minWidth: minWidthDefault,
//                minHeight: minHeightDefault,
//                displayOnInit: true,
//
//                ratioDim:
//                {
//                    x: ratio_w,
//                    y: ratio_h
//                },
//
//                onEndCrop: onEndCrop
//            }
//        );
    }
};


function showPreview(coords)
{
	var preview_div = jQuery('#preview_img');
	var rx = preview_div.width() / coords.w;
	var ry = preview_div.height() / coords.h;
	
	var Jcrop_image = jQuery('.jcrop-tracker').siblings('img');
	
	jQuery('#cropper_preview_image').css({
		width: Math.round(rx * Jcrop_image.width()) + 'px',
		height: Math.round(ry * Jcrop_image.height()) + 'px',
		marginLeft: '-' + Math.round(rx * coords.x) + 'px',
		marginTop: '-' + Math.round(ry * coords.y) + 'px'
	});
	
	var coords_json = Object.toJSON({
			x1:coords.x,
			x2:coords.x1,
			y1:coords.y,
			y2:coords.y1
		});
	var dimensions_json = Object.toJSON({width:coords.w, height:coords.h});
	
	$("img_coords").value = coords_json;
	$("img_dimensions").value = dimensions_json;
	$("img_scale_width").value = jQuery("#tmp_slide_img").width();
};


function toggleDirectoryBox(obj,toggleId)
{
    Effect.toggle( toggleId, 'blind', {
        duration: .2
    } );

    if($(toggleId).style['display'] == 'none')
    {
        obj.innerHTML = '<span>minimize</span>';
        obj.className = 'up';
    }
    else
    {
        obj.innerHTML = '<span>maximize</span>';
        obj.className = 'down';
    }
}

function toggleHelpBox(obj,toggleId,mini_text,maxi_text)
{
    Effect.toggle( toggleId, 'blind', {
        duration: .2
    } );

    if($(toggleId).style['display'] == 'none')
    {
        obj.innerHTML = '<span>' + mini_text + '</span>';
        obj.className = 'up help';
    }
    else
    {
        obj.innerHTML = '<span>' + maxi_text + '</span>';
        obj.className = 'down help';
    }
}

function toggleSearchBox(obj,toggleId,mini_text,maxi_text)
{
    Effect.toggle( toggleId, 'blind', {
        duration: .2
    } );

    if($(toggleId).style['display'] == 'none')
    {
        obj.innerHTML = '<span>' + mini_text + '</span>';
        obj.className = 'up';
    }
    else
    {
        obj.innerHTML = '<span>' + maxi_text + '</span>';
        obj.className = 'down';
    }
}

function toggleDisplay(obj,toggleId)
{
    Effect.toggle( toggleId, 'blind', {
        duration: .2
    } );

    if($(toggleId).style['display'] == 'none')
    {
        obj.removeClassName('down');
        obj.addClassName('up');
    }
    else
    {
        obj.removeClassName('up');
        obj.addClassName('down');
    }
}

function showActions( element )
{
    status = document.getElementById( element ).style.display;
    if( status == 'block' )
    {
        document.getElementById( element ).style.display =' none';
    }
    else
    {
        document.getElementById( element ).style.display = 'block';
    }
}

document.observe('dom:loaded',function(){
    Memberfuse.init();
    });

// graveyard
Memberfuse.Forms = {};
Memberfuse.WndManager = {};
// got to fix all of the calls to closeWindow before we throw this away
Memberfuse.WndManager.closeWindow = function()
{
	jQuery('#'+jQuery('.ui-dialog-content').attr('id')).dialog('destroy');
};

