﻿
// File = Main/Includes/RightPart/RPNodes.js

/// <reference name="MicrosoftAjax.js" />"

// Global variables 

 var ReturnUrl = "~/Farsi/Main/Members/MemberManager.aspx?ShowWelcomeMsg=true";

// Register the namespace for the controls
Type.registerNamespace("RPNodes");
    
// Define Button control

//
// Define control properties 
//

RPNodes.RPNode = function(element){
    RPNodes.RPNode.initializeBase(this, [element]);
    this._pageUrl = null;
    this._pageGroup = null;
}

//
// Create the prototype for the control.
//

RPNodes.RPNode.prototype = {
    initialize : function(){
        RPNodes.RPNode.callBaseMethod(this, "initialize");
        
        // Define event delegates
        this._onclickDelegate = Function.createDelegate(this, this._onClick);
        this._onmouseoverDelegate = Function.createDelegate(this, this._onMouseover);
        this._onmouseoutDelegate = Function.createDelegate(this, this._onMouseout); 
        
        // Add event handlers
        $addHandlers(this.get_element(),
            { 'click' : this._onClick, 'mouseover' : this._onMouseover, 'mouseout' : this._onMouseout},
                this);
                
       // Set the initial button state
        this._setInitialNodeState(); 
   },
  
  dispose : function(){
        // Remove event handlers
        $clearHandlers(this.get_element());
        
        RPNodes.RPNode.callBaseMethod(this, "dispose");
    },
    
    //
    // Event delegates
    //
    
    _onClick : function(e){
        e.stopPropagation();
        var pageFullUrl = this._getPageFullUrl();
        if ( pageFullUrl != null){
			location.href = pageFullUrl;
        }
  },
  
  _onMouseover : function(e){
        var elem = this.get_element();
        if (!Sys.UI.DomElement.containsCssClass(elem, "RPNodeCurrent")){
            elem.style.cursor = "pointer";
             Sys.UI.DomElement.removeCssClass(elem, "RPNodeNormal");
             Sys.UI.DomElement.addCssClass(elem, "RPNodeOver");
        }
        
        e.stopPropagation();
  },
  
  _onMouseout : function(e){
        var elem = this.get_element();
        if (!Sys.UI.DomElement.containsCssClass(elem, "RPNodeCurrent")){
            elem.style.cursor = "default";
            Sys.UI.DomElement.removeCssClass(elem, "RPNodeOver");
            Sys.UI.DomElement.addCssClass(elem, "RPNodeNormal");
        }
        
        e.stopPropagation();
  },   
    
   //
   // Control properties
   //
   
   // pageGroup
  get_pageGroup : function(){
    return (this._pageGroup);
  },
  
  set_pageGroup : function(value){
    this._pageGroup = value;
  },
  
  // pageUrl
  get_pageUrl : function(){
    var pageUrl = this._pageUrl;
    if (pageUrl == "Home.aspx"){
        var sb = new Sys.StringBuilder(pageUrl);
        sb.append("?ReturnUrl=");
        sb.append(ReturnUrl);        
    }
       
    return (pageUrl);
  },
  
  set_pageUrl : function(value){
    this._pageUrl = value;
  },
  
  //
  // General methods
  //
  
  _setInitialNodeState : function(){
        var elem = this.get_element();
        var pageUrl = this.get_pageUrl();
        elem.style.cursor = "default"; 
        if (pageUrl == CurrentPageName)
            Sys.UI.DomElement.addCssClass(elem, "RPNodeCurrent"); 
        else
            Sys.UI.DomElement.addCssClass(elem, "RPNodeNormal");
    },
    
    _getPageFullUrl : function(){
        var pageGroup = this.get_pageGroup();
        var pageUrl = this.get_pageUrl();
        if ((pageUrl == null) || (pageGroup == null))
            return null;
        
        var pageDir;
        switch(pageGroup){
            case "Main" :
                pageDir = MainPagesDir;
                break;
            case "Members" :
                pageDir = MembersPagesDir;
                break;
            default:
                pageDir = null;
                break;    
        }
        
        if ((AppDir == null) || (pageDir == null))
            return null;
        
        return AppDir + pageDir + pageUrl;
    }
 } 
  
// Register Node as a control
RPNodes.RPNode.registerClass("RPNodes.RPNode", Sys.UI.Control);

// Setup buttons
Sys.Application.add_init(
    function(){
        // Get all div elements on the page
        var oSpans = document.getElementsByTagName("span");
        var spanNode, pageUrl, pageGroup;
        for(var i=0;i<oSpans.length;i++){
            spanNode = oSpans[i];
            pageUrl = spanNode.getAttribute("rpNodePageUrl");
            pageGroup =  spanNode.getAttribute("rpNodePageGroup");
            
            if ((pageUrl != null) && (pageGroup != null)){
                var  userRoleName = UserRoleName;
                if (userRoleName == "ConfirmedMembers")
                    userRoleName = "Members";
                if ((pageGroup == "Main") || (pageGroup == userRoleName))
                    $create(RPNodes.RPNode, { pageUrl : pageUrl, pageGroup : pageGroup }, null, null, spanNode);
                else{
                    // Hide the parent node
                    Sys.UI.DomElement.setVisible(spanNode.parentNode, false);
                }    
           }
        }
    }
);
                
// End of script
if (typeof(Sys) != 'undefined')
    Sys.Application.notifyScriptLoaded();
    		