﻿// ---------- subpanel helper wrapper class ---------- //
function ContentPanelSubpanelHelperWrapper(navElementId, infoElementId,
    infoWrapperElementId, infoNameElementId, infoTrackCountElementId, infoCreatedAtElementId,
    listsGridElementId, listGridElementId) {

    m_infoNameElementId = infoNameElementId;
    m_infoTrackCountElementId = infoTrackCountElementId;
    m_infoCreatedAtElementId = infoCreatedAtElementId;
    
    // declare wrapped delegate setters
    this.setLoadListDisplayModeDataDelegate = setLoadListDisplayModeDataDelegate;
    this.setLoadPreviousDataDelegate = setLoadPreviousDataDelegate;
    this.setLoadNextDataDelegate = setLoadNextDataDelegate;
    this.setRefreshDelegate = setRefreshDelegate;

    // wrapped delegate setters
    function setLoadListDisplayModeDataDelegate(theDelegate) {
        m_contentPanelSubpanelHelper.setLoadListDisplayModeDataDelegate(theDelegate);
    }

    function setLoadPreviousDataDelegate(theDelegate) {
        m_contentPanelSubpanelHelper.setLoadPreviousDataDelegate(theDelegate);
    }

    function setLoadNextDataDelegate(theDelegate) {
        m_contentPanelSubpanelHelper.setLoadNextDataDelegate(theDelegate);
    }

    function setRefreshDelegate(theDelegate) {
        m_contentPanelSubpanelHelper.setRefreshDelegate(theDelegate);
    }
    
    
    // internal fields
    var m_contentPanelSubpanelHelper = new ContentPanelSubpanelHelper(navElementId, infoElementId, infoWrapperElementId, listsGridElementId, listGridElementId);


    // wrapped functions
    function setListDisplayMode(callback) {
        m_contentPanelSubpanelHelper.setListDisplayMode(callback);
    }

    function setSingleDisplayMode(id, scrollTargetElementId) {
        resetInfoSubpanel();
        m_contentPanelSubpanelHelper.setSingleDisplayMode(id, scrollTargetElementId);
    }

    function getDisplayMode() {
        return m_contentPanelSubpanelHelper.getDisplayMode();
    }

    function populateInfoSubpanel(url, recordId) {
        return m_contentPanelSubpanelHelper.populateInfoSubpanel(url, recordId, populateInfoSubpanelSuccess);
    }

    // declare wrapped public functions
    this.setListDisplayMode = setListDisplayMode;
    this.setSingleDisplayMode = setSingleDisplayMode;
    this.getDisplayMode = getDisplayMode;
    this.populateInfoSubpanel = populateInfoSubpanel;
    
    
    // perform initialization tasks
    function initialize(buttons) {
        m_contentPanelSubpanelHelper.initialize(buttons);
    }

    // called when store has retrieved data
    function populateInfoSubpanelSuccess(data, textStatus) {

        if(textStatus == "success" && data) {
            // set the info subpanel data
            if (data.name) $("#" + m_infoNameElementId + "").html(data.name);
            if (data.count) $("#" + m_infoTrackCountElementId + "").html(data.count);
            if (data.createdat) {
                // see http://weblogs.asp.net/bleroy/archive/2008/01/18/dates-and-json.aspx for more info
                var createdat1 = data.createdat;
                var createdat2 = eval(createdat1.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"));
                var createdat3 = createdat2.getDate() + "/" + (createdat2.getMonth() + 1) + "/" + createdat2.getFullYear();
                $("#" + m_infoCreatedAtElementId + "").html(createdat3);
            }
        }
        else {
            jQuery_ajaxRequestFailed(null, textStatus, "");
        }
    }

    // clear the info subpanel
    function resetInfoSubpanel() {
        $("#" + m_infoNameElementId + "").html("");
        $("#" + m_infoTrackCountElementId + "").html("");
        $("#" + m_infoCreatedAtElementId + "").html("");
    }

    // declare public functions
    this.initialize = initialize;
}