﻿/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference name="relationalUtility.debug.js" />

Type.registerNamespace('Website.Behavior');

// ===================================================================== Persistent Toggle

// persistentToggle_click
//
// Handles the Click event of _PersistentToggle links
//
Website.Behavior.persistentToggle_click = function (evt, context) {
    var target = $get(this.id.replace(new RegExp('(.*?)_Toggle'), '$1_Target'));
    if (target.className.indexOf("Hidden") >= 0) {
        // target is hidden - show it
        Website.Behavior.persistentToggleShow(this, target);
        //Relational.Utility.setCookie(Website.Behavior.persistentToggleCookieName(target.id), "Visible", Relational.Utility.daysInFuture(999));
   }
    else {
        // target is visible - hide it
        Website.Behavior.persistentToggleHide(this, target);
        //Relational.Utility.setCookie(Website.Behavior.persistentToggleCookieName(target.id), "Hidden", Relational.Utility.daysInFuture(999));
    }         
    // Cancel link click from bubbling
    return Relational.Utility.eventCancel(evt);
} 

//Website.Behavior.persistentToggleCookieName = function (targetId) {
//    return Relational.Utility.currentPage() + targetId + "Visibility"
//}

// persistentToggleShow
//
// Shows the target of a persistentToggle switch
//
Website.Behavior.persistentToggleShow = function (toggle, target) {
    toggle.setAttribute('title', toggle.toolTipValues[1]);
    toggle.innerHTML = toggle.innerHTML.replace("Show","Hide");
    //toggle.innerHTML = "<span></span>Hide search options";
    Relational.Utility.changeClassName(toggle,"Off","On");
    Relational.Utility.changeClassName(target,"Hidden","Visible");
}

// persistentToggleHide
//
// Hides the target of a persistentToggle switch
//
Website.Behavior.persistentToggleHide = function (toggle, target) {
    toggle.setAttribute('title', toggle.toolTipValues[0]);
    toggle.innerHTML = toggle.innerHTML.replace("Hide","Show");
    //toggle.innerHTML = "<span></span>Show search options";
    Relational.Utility.changeClassName(toggle,"On","Off");
    Relational.Utility.changeClassName(target,"Visible","Hidden");
}

// persistentToggle_initialize
//
// Initializes the state of any persistentToggle objects
//
Website.Behavior.persistentToggle_initialize = function () {
    var toggles = Relational.Utility.getElementsBySelector("a._PersistentToggle");
    for (var i = 0; i < toggles.length; i++) {
        var toggle = toggles[i];
        toggle.toolTipValues = toggle.getAttribute("title").split(/\|/) // title attribute should contain two tooltips separated by a bar, e.g. title="Show|Hide"
        var target = $get(toggle.id.replace(new RegExp('(.*?)_Toggle'), '$1_Target'));
        //var cookieValue = Relational.Utility.getCookie(Website.Behavior.persistentToggleCookieName(target.id));
	    //if (cookieValue == "Visible"){
        //    Website.Behavior.persistentToggleShow(toggle, target);
	    //} else {
        //    Website.Behavior.persistentToggleHide(toggle, target);
	    //}
    }        
}

Website.Behavior.clickByProxy_click = function () {
    /// <summary>
    /// Handles the click event of _clickByProxy divs
    /// </summary>
    Relational.Utility.clickInside(this,'_ClickTarget');
}

// waitButton_click
//
// Handles the click event of WaitButtonLinks
//
Website.Behavior.waitButton_click = function () {
    var waitButton = this;
    if (waitButton) {
        if (waitButton.tagName=='SPAN') waitButton=waitButton.parentNode;
        if(Relational.Utility.isPageValid(waitButton) == true) {
            // build DummyButton
            var dummyButton = document.createElement('a');
            dummyButton.className = waitButton.className + " DummyButton"; // Keep same CSS classes as original link
            dummyButton.style.cssText = waitButton.style.cssText; // Keep any styles set manually on the page
            dummyButton.innerHTML="<span></span><img src='../images/dingbats/spinner.tiny.2.gif' />Please wait...";
            waitButton.parentNode.insertBefore(dummyButton,waitButton); 
            // hide WaitButton
            Relational.Utility.changeClassName(waitButton,'Button','Hidden');
        }
    } 
}

// Rules that are needed on both the admin and public sites
Website.Behavior.globalRules =
{

    // Wire up _clickByProxy divs to click through to the a.ClickTarget element
    'div._ClickByProxy' : function(element){
        $addHandler(element, 'click', Website.Behavior.clickByProxy_click);
    },

    // Wait button behavior
    'a._WaitButton' : function(element){
        $addHandler(element, 'click', Website.Behavior.waitButton_click);
    },
    // gallery drag and drop (link)
    'a._Handle' : function(element){
        var payloadElementId = element.id.replace(new RegExp('Handle_Link_(\d*)'), 'Payload_$1');
        var context = { payloadElementId : payloadElementId };
        $addHandler(element, 'dragstart', Function.createCallback(Relational.Utility.onDragGalleryItem, context));
    },
    // gallery drag and drop (image)
    'img._Handle' : function(element){
        var payloadElementId = element.id.replace(new RegExp('Handle_Image_(\d*)'), 'Payload_$1');
        var context = { payloadElementId : payloadElementId };
        $addHandler(element, 'dragstart', Function.createCallback(Relational.Utility.onDragGalleryItem, context));
    },
    // Persistent toggle
    'a._PersistentToggle' : function(element){
        var context = {"element" : element};
        if (Sys.WebForms.PageRequestManager.getInstance().get_isInAsyncPostBack()==false) {
            $addHandler(element, 'click', Function.createCallback(Website.Behavior.persistentToggle_click, context));
        }
    }
}

/************************************** BEHAVIORS FOR THIS APPLICATION */

Website.Behavior.initialize = function(isAdminPage) {
    // This needs to be called at the bottom of every root master page.
    Relational.Utility.Rules.register(Website.Behavior.globalRules);
    Relational.Utility.Rules.apply();
    Website.Behavior.persistentToggle_initialize();
}

    



// Notify ScriptManager that this is the end of the script.
if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();






