var ANIM = YAHOO.util.Anim;
var AUTOCOMPLETE = YAHOO.widget.AutoComplete;
var BUTTON = YAHOO.widget.Button;
var CAL = YAHOO.widget.Calendar;
var CAROUSEL = YAHOO.widget.Carousel;
var LINECHART = YAHOO.widget.LineChart;
var BARCHART = YAHOO.widget.BarChart;
var COLUMNCHART = YAHOO.widget.ColumnChart;
var PIECHART = YAHOO.widget.PieChart;
var STACKEDBARCHART = YAHOO.widget.StackedBarChart;
var STACKEDCOLUMNCHART = YAHOO.widget.StackedColumnChart;
var COLORPICKER = YAHOO.widget.ColorPicker;
var XHR = YAHOO.util.Connect;
var COOKIE = YAHOO.util.Cookie;
var DATASOURCE = YAHOO.util.DataSource;
var DATATABLE = YAHOO.widget.DataTable;
var DD  = YAHOO.util.DD;
var DOM = YAHOO.util.Dom;
var EDITOR = YAHOO.widget.Editor;
var ELEMENT = YAHOO.util.Element;
var EVENT = YAHOO.util.Event;
var GET = YAHOO.util.Get;
var HISTORY = YAHOO.util.History;
var IMAGELOADER = YAHOO.util.ImageLoader;
var CROPPER = YAHOO.widget.ImageCropper;
var JSON = YAHOO.lang.JSON;
var LAYOUT = YAHOO.widget.Layout;
var LOGGER = YAHOO.widget.LogReader;
var MENU = YAHOO.widget.Menu;
var CONTEXTMENU = YAHOO.widget.ContextMenu;
var MENUBAR = YAHOO.widget.MenuBar;
var PANEL = YAHOO.widget.Panel;
var PAGINATOR = YAHOO.widget.Paginator;;
var PROGRESSBAR = YAHOO.widget.ProgressBar;
var RESIZE = YAHOO.util.Resize;
var SELECTOR = YAHOO.util.Selector;
var SIMPLEEDITOR = YAHOO.widget.SimpleEditor;
var SLIDER = YAHOO.widget.Slider;
var STORAGE = YAHOO.util.StorageManager;
var SWF = YAHOO.widget.SWF;
var SWFSTORE = YAHOO.util.SWFStore;
var STYLESHEET = YAHOO.util.StyleSheet;
var TAB = YAHOO.widget.TabView;
var TREE = YAHOO.widget.TreeView;
var UPLOADER = YAHOO.widget.Uploader;

// Render YUI Trees
tree = new Array();
tree_top = new Array();
tree_expanded = new Array();
tree_expanded_node_count = new Array();
tree_callback = new Array();
var tree_state = COOKIE.getSub('mdk-state','tree_expanded_nodes');
if (tree_state == null) {
  tree_state = "";
}
var toggle_link = new Array();
var toggle_text = new Array();

function toggle_tree(tree) {
  button_id = 'toggle_tree_'+tree.id;
  if (DOM.get(button_id)) {
    if (typeof tree_expanded[tree.id] == 'undefined') {
      tree_expanded[tree.id] = 'collapsed';
    }
    if (tree_expanded[tree.id] == 'collapsed') {
      tree.expandAll();
      DOM.get(button_id).innerHTML='(Collapse All)';
      tree_expanded[tree.id] = 'expanded';
    }
    else if(tree_expanded[tree.id] == 'expanded') {
      tree.collapseAll();
      DOM.get(button_id).innerHTML='(Expand All)';
      tree_expanded[tree.id] = 'collapsed';
    }
  }
}

function toggle_tree_sync(tree) {
  var tree_id = tree.id;
  var state = 'unchanged';
  var button_id = 'toggle_tree_'+tree.id;
  if (DOM.get(button_id)) {
    var tree_nodes = tree.getNodesByProperty('className','tree_' + tree_id);
    if (tree_expanded_node_count[tree.id] == 0 || !tree_nodes[0].expanded ) {
      state = 'collapsed';
    }
    else if (tree_expanded_node_count[tree.id] == tree_nodes.length) {
      state = 'expanded';
    }

    if (state != 'unchanged') {
      tree_expanded[tree.id] = state;
      if (tree_expanded[tree.id] == 'collapsed') {
        DOM.get(button_id).innerHTML='(Expand All)';
      }
      else {
        DOM.get(button_id).innerHTML='(Collapse All)';
      }
    }
  }
}

var tree_add_dynamic_nodes = function(o) {
  if (o.responseText !== undefined) {
    eval(o.responseText);
  }
}

function tree_track_state(tree,node) {
  if (typeof node.data.myNodeId != 'undefined') {
    var tree_id = tree.id;
    if (node.data.get_children) {
      var request = YAHOO.util.Connect.asyncRequest('GET', node.data.get_children, {success:tree_add_dynamic_nodes});
    }
    var node_id = node.data.myNodeId;
    current_state = new Array();
    if (tree_state) {
      expanded_nodes = tree_state.split(',');
    }
    else {
      expanded_nodes = new Array();
      tree_state = "";
    }
    var node_exists = tree_state.indexOf(node_id);
    if (node.expanded && node_exists == -1) {
      expanded_nodes.push(node_id);
      tree_expanded_node_count[tree_id]++;
    }
    else if (!node.expanded && node_exists != -1) {
      expanded_nodes = tree_track_remove_node(expanded_nodes, node_id);
      tree_expanded_node_count[tree_id]--;
    }
    tree_state = expanded_nodes.join(',');
    COOKIE.setSub('mdk-state','tree_expanded_nodes',tree_state,{ path: '/'});
    toggle_tree_sync(tree);
  }
}

function tree_reset_expand(tree_id) {
  if (tree_state != '') {
    var tree = YAHOO.widget.TreeView.getTree(tree_id);
    var tree_nodes = tree.getNodesByProperty('className','tree_' + tree_id);
    tree_expanded_node_count[tree_id] = 0;
    for (var i in tree_nodes) {
      var node_id = tree_nodes[i].data.myNodeId;
      if (tree_state.indexOf(node_id) != -1) {
        tree_nodes[i].expand();
        if (tree_nodes[i].data.get_children) {
          var cb_id = 'cb_' + tree_nodes[i].data.myNodeId;
          var cb = 0;
          if(DOM.get(cb_id).checked) {
            cb = 1
          }
          var request = YAHOO.util.Connect.asyncRequest('GET', tree_nodes[i].data.get_children, {success:tree_add_dynamic_nodes});
        }
        tree_expanded_node_count[tree_id]++;
      }
    }
    toggle_tree_sync(tree);
  }
    var selected_communities = DOM.getElementsByClassName('tree_selected_community','div',tree_id);
    if (selected_communities.length > 0) {
      var parent_div = DOM.getAncestorByClassName(selected_communities[0],'ygtvitem');
      if (parent_div) {
       DOM.addClass(parent_div,'tree_sectionparent');
      }
    }
}

function tree_track_remove_node(nodes, node_id) {
  var i = 0;
  while (i < nodes.length) {
    if (nodes[i] == node_id) {
      nodes.splice(i, 1);
    }
    else {
      i++;
    }
  }
  return nodes;
}

function tree_init(id) {
    tree[id] = new YAHOO.widget.TreeView(DOM.get(id));
    tree[id].render();
    tree[id].subscribe('dblClickEvent',tree[id].onEventEditNode);
    tree_top[id] = DOM.get('tree_top_' + id);
    if (tree_top[id]) {
      toggle_link[id] = document.createElement('a');
      toggle_text[id] = document.createTextNode('(Expand All)');
      toggle_link[id].setAttribute('href','#');
      toggle_link[id].setAttribute('id','toggle_tree_' + id);
      toggle_link[id].appendChild(toggle_text[id]);
      tree_top[id].appendChild(toggle_link[id]);
    }
    tree_reset_expand(id);
    if (DOM.get('toggle_tree_' + id)) {
      EVENT.removeListener('toggle_tree_' + id, 'click');
      EVENT.on('toggle_tree_' + id, 'click', function(e) {toggle_tree(tree[id]);EVENT.stopEvent(e)});
    }
    tree[id].subscribe('expandComplete', function(node) {tree_track_state(tree[id],node);});
    tree[id].subscribe('collapseComplete', function(node) {tree_track_state(tree[id],node);});
    if (typeof tree_callback[id] != 'undefined') {
      try {
        eval(tree_callback[id]);
      }
      catch(err) {
      }
    }
}

function init_all_trees() {
  var trees = DOM.getElementsByClassName('yui-tree', 'div');
  for (var i in trees) {
    tree_init(trees[i].id);
    DOM.removeClass(trees[i],'yui-tree');
    trees[i].style.visibility='inherit';
    if (DOM.get('mirs_side_bar')) {DOM.get('mirs_side_bar').style.overflow='auto'}
  }
  
}
//if ((YAHOO.env.ua.ie < 7 && YAHOO.env.ua.ie)){EVENT.onDOMReady(init_all_trees);}

// Render YUI Editor
function render_yui_editor(editor_id) {
  var myConfig = {
      height: '200px',
      width: '560px',
      animate: true,
      dompath: true,
      focusAtStart: true,
      handleSubmit: true,
      autoHeight: false
  };

  var state = 'off';

  var myEditor = new YAHOO.widget.Editor(editor_id, myConfig);
  myEditor.on('toolbarLoaded', function() {
      var codeConfig = {
          type: 'push', label: 'Edit HTML Code', value: 'editcode'
      };
      this.toolbar.addButtonToGroup(codeConfig, 'textstyle2');

      this.toolbar.on('editcodeClick', function() {
          var ta = this.get('element'),
              iframe = this.get('iframe').get('element');

          if (state == 'on') {
              state = 'off';
              this.toolbar.set('disabled', false);
              this.setEditorHTML(ta.value);
              if (!this.browser.ie) {
                  this._setDesignMode('on');
              }

              DOM.removeClass(iframe, 'editor-hidden');
              DOM.addClass(ta, 'editor-hidden');
              this.show();
              this._focusWindow();
          } else {
              state = 'on';
              this.cleanHTML();
              DOM.addClass(iframe, 'editor-hidden');
              DOM.removeClass(ta, 'editor-hidden');
              this.toolbar.set('disabled', true);
              this.toolbar.getButtonByValue('editcode').set('disabled', false);
              this.toolbar.selectButton('editcode');
              this.dompath.innerHTML = 'Editing HTML Code';
              this.hide();
          }
          return false;
      }, this, true);

      this.on('cleanHTML', function(ev) {
          this.get('element').value = ev.html;
      }, this, true);

      this.on('afterRender', function() {
          var wrapper = this.get('editor_wrapper');
          wrapper.appendChild(this.get('element'));
          this.setStyle('width', '100%');
          this.setStyle('height', '100%');
          this.setStyle('visibility', '');
          this.setStyle('top', '');
          this.setStyle('left', '');
          this.setStyle('position', '');

          this.addClass('editor-hidden');
      }, this, true);
  }, myEditor, true);
  myEditor.render();

}

function render_all_yui_editors() {
  var editors = DOM.getElementsByClassName('rte','textarea');
  for (var i in editors) {
    render_yui_editor(editors[i].id);
  }
}



function handle_row_click (e) {
  var row = this.getTrEl(e.target),
  rec = this.getRecord(row);
  if (row && rec && row_has_checkbox(row)) {
    if (this.isSelected(rec)) {
      this.unselectRow(rec);
    }
    else {
      this.selectRow(rec);
    }
  }
}

function handle_row_select(args) {
  var row = args.el;
  var cb = row_has_checkbox(row);
  if (cb) {
     cb.checked=true;
     var cb_id_parts = cb.id.split(',');
     var list_id = cb_id_parts[0];
     var row = DOM.getAncestorByTagName(cb,'tr');
     if (row) {
       var table = DOM.getAncestorByTagName(row,'table');
       if (table) {
         var dt_container = DOM.getAncestorByTagName(table,'div');
         if (dt_container) {
           var datatable = dt[list_id][dt_container.id];
           var selected_row_count = datatable.getSelectedRows().length;
           var total_row_count = DOM.getElementsByClassName(cb.className,'input').length;
           if (selected_row_count == total_row_count) {

             var cab = DOM.get('ca_' + list_id);
             if (cab) {
               cab.checked=true;
             }
           }
         }
       }
     }
  }
}

function handle_row_unselect(args) {
  var row = args.el;
  var cb = row_has_checkbox(row);
  if (cb) {
     cb.checked=false;
     var cb_id_parts = cb.id.split(',');
     var list_id = cb_id_parts[0];
     var cab = DOM.get('ca_' + list_id);
     if (cab) {
       cab.checked=false;
     }
  }

}

function row_has_checkbox(row) {
   var td = DOM.getFirstChild(row);
   var div = DOM.getFirstChild(td);
   var cb = DOM.getFirstChild(div);
   if (cb) {
     if (cb.nodeName.toUpperCase() == 'INPUT') {
       return cb;
     }
     else {
       return null;
     }
   }
   else {
     return null;
   }
}

function handle_cb_row(cb) {
   var cb_id_parts = cb.id.split(',');
   var list_id = cb_id_parts[0];
   var row = DOM.getAncestorByTagName(cb,'tr');
   if (row) {
     var table = DOM.getAncestorByTagName(row,'table');
     if (table) {
       var dt_container = DOM.getAncestorByTagName(table,'div');
       if (dt_container)  {
         var datatable = dt[list_id][dt_container.id];
         rec = datatable.getRecord(row);
         if (row && rec) {
           if (!cb.checked) {
            datatable.unselectRow(row);
           }
           else {
            datatable.selectRow(row);
           }
         }
       }
     }
   }
}

var handle_column_sort = function handle_column_sort(col, dir) {
  var liner_el = col.getThLinerEl();
  var dt_container = DOM.getAncestorByClassName(liner_el,'yui-dt');
  var list_id = dt_container.id.split('-')[0];
  var datatable = dt[list_id][dt_container.id];
  var paginator = DOM.getElementsByClassName('yui-dt-paginator','div',dt_container).length;
  if (typeof col.orderby_url != 'undefined' && paginator) {
    datatable.doBeforeSortColumn = function(col, dir) {return false};
    window.location=col.orderby_url;
  } else {
    return true;
  }
}

handle_after_sort = function() {
  yui_render_lbuttons();
  yui_render_pbuttons();
}

function handle_check_all(e) {
 elTarget = EVENT.getTarget(e);
 var caa_id = elTarget.id.split('_');
 caa_id.shift();
 var list_id = caa_id.join('_');
 var cba = DOM.getElementsByClassName('cb_' + list_id,'input');
 for (var i=0;i<cba.length;i++) {
     cba[i].checked=elTarget.checked;
     handle_cb_row(cba[i],e);
 }
}

function handle_list_cb(e) {
 elTarget = EVENT.getTarget(e);
 var selected_cbs = elTarget.className;
 var cbb = DOM.getElementsByClassName(selected_cbs,'input');
 var all_checked = true;
 for (var i=0;i<cbb.length;i++) {
   handle_cb_row(cbb[i]);
   if (!cbb[i].checked) {
     all_checked = false;
   }
 }
 var cbb_id = selected_cbs.split('_');
 cbb_id.shift();
 var list_id = cbb_id.join('_');
 var cab = DOM.get('ca_' + list_id);
 if (cab) {
   cab.checked=all_checked;
 }
}

function confirm_load(e) {
  var obj=YAHOO.util.Event.getTarget(e);
  var v=obj.value;
  if (v>=1000) {
    alert('This folder contains ' + v + ' items and may take a long time to load.');
  }
}

function add_large_warning() {
  var s = YAHOO.util.Dom.getElementsByClassName('yui-pg-rpp-options','select');
  for (var i=0;i<s.length;i++) {
    YAHOO.util.Event.removeListener(s[i],'change', confirm_load);
    YAHOO.util.Event.on(s[i],'change',confirm_load);
  }
}
try {
function create_folder_datatable(folder_id,rtp_column,d3c_column,vd_column) {
    // Column definitions
    var folder_contents_cd = [
	{key:"object_id", label:'<input type="hidden" name="cf_id" value="' + folder_id + '" id="cf_id"><input type="checkbox" id="ca_contents" class="list_checkall" name="_dummy">', width:50},
	{key:"name", label:"Name", sortable:true, resizeable:true, width:300},
	{key:"content_size", label:"Size", sortable:true, resizeable:true, width:85},
	{key:"type", label:"Type", sortable:true, resizeable:true, width:150},
	{key:"last_modified_ansi", label:"Modified", sortable:true, resizeable:true, width:175}
    ];
    
    if (rtp_column) {
      folder_contents_cd.push(rtp_column);
    }
    if (d3c_column) {
      folder_contents_cd.push(d3c_column);
    }
    if (vd_column) {
      folder_contents_cd.push(vd_column);
    }

    
    // Paginator 
    folder_contents_pg = new PAGINATOR({containers : ["contents-pg-top","contents-pg-bottom"], 
							  template:'<div style="float:left" class="main_paginator">{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}</div> 	\
								    <div style="float:right" class="pg_extra">													\
								    <span class="paginator_showrows">Show {RowsPerPageDropdown} Items</span>						\
								    <span class="paginator_gotopage">       													\
								      <input type="text" size="4" class="gotopage_input" style="margin-right:0px">								\
								      <input type="button" class="pbutton gotopage_submit" value="Go to Page" style="margin-left:0px">					\
								    </span>																	\
								    </div>																	\
								    <div style="height:1px;clear:both"></div>',
							  alwaysVisible : false,
							  pageLinks : 10,
							  rowsPerPageOptions : [25,50,100,1000]
							});
    // DataTable configuration
    var folder_contents_cf = {
	dynamicData: true,
	minWidth: 800,
	paginator: folder_contents_pg,
	initialLoad : false

    };
    
    // DataTable instance
    var folder_contents_dt = new DATATABLE("contents-dt", folder_contents_cd, folder_contents_ds,folder_contents_cf);
    folder_contents_dt.showTableMessage(folder_contents_dt.get("MSG_LOADING"), DATATABLE.CLASS_LOADING);

    var handle_sorting = function (oColumn) {
	folder_contents_dt.showTableMessage(folder_contents_dt.get("MSG_LOADING"), DATATABLE.CLASS_LOADING);
	var sDir = this.getColumnSortDir(oColumn);
	var newState = generateRequest(0, oColumn.key, sDir, this.get("paginator").getRowsPerPage());
	COOKIE.setSub('mdk-state','folder_state_' + folder_id,newState,{path: '/'});
	HISTORY.navigate("folder_contents_dt", newState);
    };
    folder_contents_dt.sortColumn = handle_sorting;

    var handle_pagination = function(state) {
	folder_contents_dt.showTableMessage(folder_contents_dt.get("MSG_LOADING"), DATATABLE.CLASS_LOADING);
	var sortedBy  = this.get("sortedBy"),
	    newState = generateRequest(
	    state.recordOffset, sortedBy.key, sortedBy.dir, state.rowsPerPage
	);

	// Pass the state along to the Browser History Manager
	COOKIE.setSub('mdk-state','folder_state_' + folder_id,newState,{path: '/'});
	HISTORY.navigate("folder_contents_dt", newState);
    };
    folder_contents_pg.unsubscribe("changeRequest", folder_contents_dt.onPaginatorChangeRequest);
    folder_contents_pg.subscribe("changeRequest", handle_pagination, folder_contents_dt, true);
    folder_contents_dt.doBeforeLoadData = function(oRequest, oResponse, oPayload) {
      var meta = oResponse.meta;
      oPayload.totalRecords = meta.totalRecords || oPayload.totalRecords;
      oPayload.pagination = {
	  rowsPerPage: meta.paginationRowsPerPage || 25,
	  recordOffset: meta.paginationRecordOffset || 0
      };
      oPayload.sortedBy = {
	  key: meta.sortKey || "name",
	  dir: (meta.sortDir) ? "yui-dt-" + meta.sortDir : "yui-dt-asc" // Convert from server value to DataTable format
      };
      return true;
    };
    
    // Returns a request string for consumption by the DataSource
    var generateRequest = function(startIndex,sortKey,dir,results) {
      startIndex = startIndex || 0;
      sortKey   = sortKey || "name";
      dir   = (dir) ? dir.substring(7) : "asc"; // Converts from DataTable format "yui-dt-[dir]" to server value "[dir]"
      results   = results || 25;
      return "results="+results+"&startIndex="+startIndex+"&sort="+sortKey+"&dir="+dir;
  };

    // Called by Browser History Manager to trigger a new state
    var handleHistoryNavigation = function (request) {
	// Sends a new request to the DataSource
	folder_contents_ds.sendRequest(request,{
	    success : folder_contents_dt.onDataReturnSetRows,
	    failure : folder_contents_dt.onDataReturnSetRows,
	    scope : folder_contents_dt,
	    argument : {} // Pass in container for population at runtime via doBeforeLoadData
	});
    };

    // Calculate the first request
    var initialRequest = COOKIE.getSub('mdk-state','folder_state_' + folder_id);
    if (!initialRequest) {
      var bookmarked_state = HISTORY.getBookmarkedState("folder_contents_dt") ;
      if (bookmarked_state) {
	initialRequest = bookmarked_state;
      }
      else {
	initialRequest = generateRequest();
      }
    }

    // Register the module
    HISTORY.register("folder_contents_dt", initialRequest, handleHistoryNavigation);

    // Render the first view
    HISTORY.onReady(function() {
	// Current state after BHM is initialized is the source of truth for what state to render
	var currentState = HISTORY.getCurrentState("folder_contents_dt");
	handleHistoryNavigation(currentState);
    });

    // Initialize the Browser History Manager.
    HISTORY.initialize("yui-history-field", "yui-history-iframe");

    folder_contents_dt.subscribe("rowMouseoverEvent", folder_contents_dt.onEventHighlightRow);
    folder_contents_dt.subscribe("rowMouseoutEvent", folder_contents_dt.onEventUnhighlightRow);
    folder_contents_dt.subscribe("rowClickEvent", handle_row_click);
    folder_contents_dt.subscribe("rowSelectEvent", handle_row_select);
    folder_contents_dt.subscribe("rowUnselectEvent", handle_row_unselect);
    folder_contents_dt.subscribe("linkClickEvent", function(e) {return false});

    
    var ca = DOM.getElementsByClassName('list_checkall','input');
    EVENT.on('ca_contents', 'click', function(e){handle_check_all(e)});
      dt['contents']['contents-dt']=folder_contents_dt;
    
    function button_handle_gotopage(e) {
      el = EVENT.getTarget(e);
      pg_extra_div = DOM.getAncestorByClassName(el,'pg_extra');
      input = DOM.getElementsByClassName('gotopage_input','input',pg_extra_div)[0];
      if (input) {
	handle_gotopage(input.value);
      }
      EVENT.stopEvent(e);
    }
    
    function key_handle_gotopage(type,args) {
      var e = args[1];
      var obj = EVENT.getTarget(e);
      handle_gotopage(obj.value);
      EVENT.stopEvent(e);
    }
    
    function handle_gotopage(page) {
      if (page != '') {
	  var current_state = folder_contents_dt.getState();
	  if (!parseInt(page)) {
	    page = 1;
	  }
	  page = parseInt(page);
	  if (page > folder_contents_pg.getTotalPages()) {
	    page = folder_contents_pg.getTotalPages();
	  }
	  if (page < 1) {
	    page = 1;
	  }
	  var current_state_request = generateRequest(current_state.pagination.recordOffset, current_state.sortedBy.key, current_state.sortedBy.dir, current_state.pagination.rowsPerPage)
	  var newPage = (page - 1) * current_state.pagination.rowsPerPage;
	  var newState = generateRequest(newPage, current_state.sortedBy.key, current_state.sortedBy.dir, current_state.pagination.rowsPerPage)
	  // Pass the state along to the Browser History Manager
	  if (current_state_request != newState) {
	    folder_contents_dt.showTableMessage(folder_contents_dt.get("MSG_LOADING"), DATATABLE.CLASS_LOADING);
	    COOKIE.setSub('mdk-state','folder_state_' + folder_id,newState,{path: '/'});
	    HISTORY.navigate("folder_contents_dt", newState);
	    gtp_inputs = DOM.getElementsByClassName('gotopage_input','input');
	    for (var i in gtp_inputs) {
	      gtp_inputs[i].value = page;
	    }
	  }
      }
    }
    function contents_dt_after_render() {
      yui_render_pbuttons();
      if (folder_contents_pg.getTotalRecords() < 26) {
	DOM.setStyle('contents-pg-top','display','none');
	DOM.setStyle('contents-pg-bottom','display','none');
	DOM.setStyle('contents-dt','margin-top','5px');
	DOM.setStyle('contents-dt','margin-bottom','5px');
      }
      else {
	gtp_inputs = DOM.getElementsByClassName('gotopage_input','input');
	for (var j in gtp_inputs) {

	  sb = new YAHOO.util.KeyListener(gtp_inputs[j], {keys:13}, {fn:key_handle_gotopage});
	  sb.enable();
	  pg_extra_div = DOM.getElementsByClassName('pg_extra','div')[j];
	  gtp_submit = DOM.getElementsByClassName('gotopage_submit','input',pg_extra_div)[0];
	  if (!gtp_submit) {
	    gtp_submit_container = DOM.getElementsByClassName('yui-button','span',pg_extra_div)[0];
	    gtp_submit = DOM.getFirstChild(DOM.getFirstChild(gtp_submit_container));
	  }
	  EVENT.removeListener(gtp_submit,'click');
	  EVENT.on(gtp_submit,'click',button_handle_gotopage);
	}
	if (DOM.get('mirs_main')) {
	  DOM.get('mirs_main').scrollTop=0;
	}
      }
    }
    folder_contents_dt.subscribe("renderEvent", contents_dt_after_render);
    return {
	ds: folder_contents_ds,
	dt: folder_contents_dt
    };

}
}
catch(err) {
  alert(err);
}

function yui_render_lbuttons() {
  try {
  allbuttons = DOM.getElementsByClassName('lbutton','a');
  for (var b=0;b<allbuttons.length;b++) {
    var node = allbuttons[b];
    atts = new Array();
    evts = new Array();
    for(var i=0; i<node.attributes.length; i++) {
      if(node.attributes.item(i).specified) {
        if (node.attributes.item(i).nodeName.indexOf('on') == 0) {
          evts[node.attributes.item(i).nodeName]=node.attributes.item(i).nodeValue;
        }
        else {
          if (node.attributes.item(i).nodeName != 'class' && node.attributes.item(i).nodeName != 'id') {
            atts[node.attributes.item(i).nodeName]=node.attributes.item(i).nodeValue;
          }
        }
      }
    }
    var button = new YAHOO.widget.Button(node);
    var first_child = DOM.getFirstChild(button);
    var button_anchor = DOM.getFirstChild(first_child);
    DOM.removeClass(button_anchor,'lbutton');
    for (a in atts) {
      button_anchor.setAttribute(a,atts[a]);
    }
    for (ev in evts) {
      var event_name = ev.replace(/^on/,'');
      button_anchor.setAttribute(event_name + '_hold',evts[ev]);
      EVENT.on(button_anchor, event_name, function(e){lbutton_event(e)});
    }
  }
  }
  catch (err) {
  }
}
function lbutton_event(e) {
 var el = EVENT.getTarget(e);
 if (el.nodeName.toUpperCase()  != 'A') {
   el = el.parentNode;
 }
 var code = el.getAttribute(e.type + '_hold');
 eval(code);
 EVENT.preventDefault(e);
 EVENT.stopPropagation(e);
}

function yui_render_pbuttons() {
  try {
  allbuttons = DOM.getElementsByClassName('pbutton');
  for (var b=0;b<allbuttons.length;b++) {
    var node = allbuttons[b];
    atts = new Array();
    evts = new Array();
    for(var i=0; i<node.attributes.length; i++) {
      if(node.attributes.item(i).specified) {
        if (node.attributes.item(i).nodeName.indexOf('on') == 0) {
          evts[node.attributes.item(i).nodeName]=node.attributes.item(i).nodeValue;
        }
        else {
          if (node.attributes.item(i).nodeName != 'class' && node.attributes.item(i).nodeName != 'id') {
            atts[node.attributes.item(i).nodeName]=node.attributes.item(i).nodeValue;
          }
        }
      }
    }
    var button = new YAHOO.widget.Button(node);
    var first_child = DOM.getFirstChild(button);
    var button_anchor = DOM.getFirstChild(first_child);
    DOM.removeClass(button_anchor,'pbutton');
//     for (a in atts) {
//       button_anchor.setAttribute(a,atts[a]);
//     }
    for (ev in evts) {
      var event_name = ev.replace(/^on/,'');
      button_anchor.setAttribute(event_name + '_hold',evts[ev]);
      EVENT.on(button_anchor, event_name, function(e){pbutton_event(e)});
    }
  }
  }
  catch (err) {
  }
}
function pbutton_event(e) {
 var el = EVENT.getTarget(e);
 var code = el.getAttribute(e.type + '_hold');
 eval(code);
 EVENT.preventDefault(e);
 EVENT.stopPropagation(e);
}
// EVENT.on(window,'load',yui_render_lbuttons);
// EVENT.on(window,'load',yui_render_pbuttons);

function render_portlets() {
  if (DOM.get('mirs_main')) {
    mirs_main_width = DOM.get('mirs_main').scrollWidth;
    var total_columns = DOM.getElementsByClassName('portal-column','td',DOM.get('mirs_main')).length;
    default_container_width = parseInt(parseInt(mirs_main_width) / total_columns)-50;
    var portlets = DOM.getElementsByClassName('yui-portlet','div');
    for (var i in portlets) {
        portlet_width = portlets[i].scrollWidth;
        portlet_height = portlets[i].scrollHeight;
        if (portlet_width > default_container_width) {
          container_width=portlet_width;
        }
        else {
          container_width = default_container_width
        }
        DOM.setStyle(portlets[i],'width',container_width);
	DOM.setStyle(portlets[i].parentNode,'width',container_width);
    }
  }
}

tree_callback['favorites'] = 'fav_tree_callback();'
function fav_tree_callback() {
  fav_nodes = DOM.getElementsByClassName('fav_node','a');
  for (var i in fav_nodes) {
    EVENT.on(fav_nodes[i],'mouseover',function(e){show_fav_edit(e)});
    parent_div = DOM.getAncestorByTagName(fav_nodes[i],'div');
  } 
}
function show_fav_edit(e) {
  el = EVENT.getTarget(e);
  if (el.nodeName.toLowerCase() == 'a') {
    parent_div = el.parentNode;
    edit_links = DOM.getElementsByClassName('fav_node_edit','span');
    for (var j in edit_links) {
      DOM.setStyle(edit_links[j],'visibility','hidden');
    }
    child_edit_links = DOM.getElementsByClassName('fav_node_edit','span',parent_div)[0];
    DOM.setStyle(child_edit_links,'visibility','visible');
    EVENT.stopEvent(e);
  }
}

var folder_new_panel, fav_new_panel, fav_del_panel, global_fav_new;
function render_fav_panels () {
  if (DOM.get('global_fav_new')) {
    global_fav_new = new YAHOO.widget.Panel("global_fav_new", {
      fixedcenter: true,
      constraintoviewport: true,
      width: '400px',
      zIndex: 10,
      visible:false
    });
    global_fav_new.render();
  }
  if (DOM.get('folder_new_panel') && DOM.get('fav_new_panel') && DOM.get('fav_del_panel')) {
    folder_new_panel = new YAHOO.widget.Panel("folder_new_panel", {
      fixedcenter: true,
      constraintoviewport: true,
      width: '400px',
      zIndex: 10,
      visible:false
    });
    folder_new_panel.render();

    fav_new_panel = new YAHOO.widget.Panel("fav_new_panel", {
      fixedcenter: true,
      constraintoviewport: true,
      width: '400px',
      zIndex: 10,
      visible:false
    });
    fav_new_panel.render();

    fav_del_panel = new YAHOO.widget.Panel("fav_del_panel", {
      fixedcenter: true,
      constraintoviewport: true,
      width: '400px',
      zIndex: 10,
      visible:false
    });
    fav_del_panel.render();
  }
}
var favfolder_add_folder_options = function(o) {
  if (o.responseText != 'undefined') {
    eval(o.responseText);
    DOM.get('folder_parent_id').value=parent_id;
    folder_new_panel.show();
  }
}
function fav_folder_add(parent_id) {
  folder_new_panel.setHeader('<div class="tl"></div><span>Add Folder</span><div class="tr"></div>');
  DOM.get('folder_local_title').value = '';
  var request = YAHOO.util.Connect.asyncRequest('GET', 'fav-folder-list?folder_select_id=folder_parent_id&selected_parent='+parent_id, {cache:false,success:favfolder_add_folder_options});
}
var fav_add_folder_options = function(o) {
  if (o.responseText != 'undefined') {
    eval(o.responseText);
    DOM.get('fav_parent_id').value=parent_id;
    fav_new_panel.show();
  }
}

var global_fav_add_folder_options = function(o) {
  if (o.responseText != 'undefined') {
    eval(o.responseText);
    global_fav_new.show();
  }
}

function fav_add(parent_id) {
  fav_new_panel.setHeader('<div class="tl"></div><span>Add Favorite</span><div class="tr"></div>');
  DOM.get('complete_furl').value = '';
  DOM.get('fav_local_title').value = '';
  var request = YAHOO.util.Connect.asyncRequest('GET', 'fav-folder-list?folder_select_id=fav_parent_id&selected_parent='+parent_id, {cache:false,success:fav_add_folder_options});
}

function fav_delete(favorite_id, parent_id, folder_p,url,local_title) {
  var fav_del_form = DOM.get('favorites_delete');
  var existing_fav_id = DOM.get('favorite_id');
  if (existing_fav_id) {
    existing_fav_id.parentNode.removeChild(existing_fav_id);
  }
  var fav_id_input = document.createElement('input');
  DOM.setAttribute(fav_id_input,'name','favorite_id');
  DOM.setAttribute(fav_id_input,'value',favorite_id);
  DOM.setAttribute(fav_id_input,'id','favorite_id');
  DOM.setAttribute(fav_id_input,'type','hidden');
  fav_del_form.appendChild(fav_id_input);
  if (folder_p == 'f') {
    fav_del_panel.setHeader('<div class="tl"></div><span>Delete Favorite</span><div class="tr"></div>');
    DOM.get('del_quest').innerHTML='Are you sure you want to delete ' + local_title + '?';
  } else {
    fav_del_panel.setHeader('<div class="tl"></div><span>Delete Folder</span><div class="tr"></div>');
    DOM.get('del_quest').innerHTML='Are you sure you want to delete the folder ' + local_title + ' and all favourites in it?';
  }
  fav_del_panel.show();
}

var fav_get_local_title = function(o) {
  var re_title = new RegExp("<title>[\n\r\s]*(.*)[\n\r\s]*</title>", "gmi");
  var title = re_title.exec(o.responseText);
  DOM.get('fav_local_title').value=html_entity_decode(title[1]);
  if (title == null) {
    DOM.get('fav_local_title').value='Untitled';
  }
}
function fav_edit(favorite_id, parent_id, folder_p,url,local_title) {
  if (folder_p == 'f') {
    fav_new_panel.setHeader('<div class="tl"></div><span>Edit Favorite</span><div class="tr"></div>');
    var fav_edit_form = DOM.get('favorites_new');
    var fav_id_input = document.createElement('input');
    DOM.setAttribute(fav_id_input,'name','favorite_id');
    DOM.setAttribute(fav_id_input,'value',favorite_id);
    DOM.setAttribute(fav_id_input,'type','hidden');
    fav_edit_form.appendChild(fav_id_input);
    DOM.get('complete_furl').value = url;
    DOM.get('fav_local_title').value = local_title;
    var request = YAHOO.util.Connect.asyncRequest('GET', 'fav-folder-list?folder_select_id=fav_parent_id&selected_parent='+parent_id, {cache:false,success:fav_add_folder_options});
  } else {
    folder_new_panel.setHeader('<div class="tl"></div><span>Edit Folder</span><div class="tr"></div>');
    var existing_fav_id = DOM.get('favorite_id');
    if (existing_fav_id) {
      existing_fav_id.parentNode.removeChild(existing_fav_id);
    }
    var fav_edit_form = DOM.get('folder_new');
    var fav_id_input = document.createElement('input');
    DOM.setAttribute(fav_id_input,'name','favorite_id');
    DOM.setAttribute(fav_id_input,'value',favorite_id);
    DOM.setAttribute(fav_id_input,'id','favorite_id');
    DOM.setAttribute(fav_id_input,'type','hidden');
    fav_edit_form.appendChild(fav_id_input);
    DOM.get('folder_local_title').value = local_title;
    var request = YAHOO.util.Connect.asyncRequest('GET', 'fav-folder-list?folder_select_id=folder_parent_id&folder_id='+ favorite_id + '&selected_parent='+parent_id, {cache:false,success:favfolder_add_folder_options});   
  }
}
var fav_get_title = function(o) {
    if (o.responseText !== undefined) {
        if (o.responseText.indexOf('DO EVAL') != -1) {
          eval(o.responseText);
        } 
        else {
        DOM.get('fav_local_title').value=html_entity_decode(o.responseText);
        }
    }
    else {
      DOM.get('fav_local_title').value='Untitled';
    }
    document.body.style.cursor='default';
}

var fav_set_untitled = function(o) {
  DOM.get('fav_local_title').value='Untitled';
  document.body.style.cursor='default';
}
var g_fav_get_title = function(o) {
    if (o.responseText !== undefined) {
        if (o.responseText.indexOf('DO EVAL') != -1) {
          eval(o.responseText);
        } 
        else {
        DOM.get('g_fav_local_title').value=html_entity_decode(o.responseText);
        }
    }
    else {
      DOM.get('g_fav_local_title').value='Untitled';
    }
    document.body.style.cursor='default';
}

var g_fav_set_untitled = function(o) {
  DOM.get('fav_local_title').value='Untitled';
  document.body.style.cursor='default';
}


function fav_get_page(url) {
  current_title = DOM.get('fav_local_title').value;
  if (current_title == 'Untitled' || current_title == '') {
    document.body.style.cursor='wait';
    var request = YAHOO.util.Connect.asyncRequest('GET', 'fav-get-title?url=' + escape(url), {cache:false,success:fav_get_title,failure:fav_set_untitled});
  }
}

function g_fav_get_page(url) {
  current_title = DOM.get('g_fav_local_title').value;
  if (current_title == 'Untitled' || current_title == '') {
    document.body.style.cursor='wait';
    var request = YAHOO.util.Connect.asyncRequest('GET', '/favorites/fav-get-title?url=' + escape(url), {cache:false,success:g_fav_get_title,failure:g_fav_set_untitled});
  }
}

function html_entity_decode(str) {
  var ta=document.createElement("textarea");
  ta.innerHTML=str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
  return ta.value;
}

function handle_fav_events() {
  fav_edit_links = DOM.getElementsByClassName('fav_edit_link','a');
  fav_del_links = DOM.getElementsByClassName('fav_delete_link','a');
  for (var i in fav_edit_links) {
    EVENT.removeListener(fav_edit_links[i],'click');
    EVENT.on(fav_edit_links[i],'click',fav_edit_del_link_click);
  }
  for (var j in fav_del_links) {
    EVENT.removeListener(fav_del_links[j],'click');
    EVENT.on(fav_del_links[j],'click',fav_edit_del_link_click);
  }
}
function fav_edit_del_link_click(e) {
  el = EVENT.getTarget(e);
  if (el.nodeName.toLowerCase() != 'a') {
    el = el.parentNode;
  }
  code = DOM.getAttribute(el,'click_hold');
  eval(code);
  EVENT.stopEvent(e)
}

function global_fav_add() {
  global_fav_new.setHeader('<div class="tl"></div><span>Add Favorite</span><div class="tr"></div>');
  DOM.get('g_complete_furl').value = location.href;
  DOM.get('g_fav_local_title').value = document.title;
  var request = YAHOO.util.Connect.asyncRequest('GET', '/favorites/fav-folder-list?folder_select_id=g_fav_parent_id', {cache:false,success:global_fav_add_folder_options});
}

// EVENT.on(window,'load',render_fav_panels);
// EVENT.on(window,'load',handle_fav_events);


function render_date_inputs() {
  try {
  var di = DOM.getElementsByClassName('date_input','input');
  for (var i=0;i<di.length;i++) {
    var input_id = di[i].id;
    var input_container = di[i].parentNode;
    var cal_id = input_id + '_cal';
    clear_link = document.createElement('a');
    clear_text = document.createTextNode('Clear');
    clear_link.setAttribute('href','#');
    clear_link.setAttribute('id',input_id + '_clear');
    clear_link.appendChild(clear_text);
    input_container.appendChild(clear_link);
    var cal_container_id = input_id + '_cal_container';
    cal_container = document.createElement('div');
    cal_container.id = cal_container_id;
    cal_container.className = 'yui-skin-sam cal_container';
    cal_container.style.display='none';
    cal_container.style.position='absolute';
    cal_container.style.clear='both';
    input_container.appendChild(cal_container);
    var navConfig = {
          strings : {
              month: "Choose Month",
              year: "Enter Year",
              submit: "OK",
              cancel: "Cancel",
              invalidYear: "Please enter a valid year"
          },
          monthFormat: YAHOO.widget.Calendar.LONG,
          initialFocus: "year"
    };
    cal = new YAHOO.widget.Calendar(cal_id,cal_container_id,{navigator: navConfig});
    cal.render();
    cal.selectEvent.subscribe(cal_handle_select,di[i], true);
    EVENT.on(di[i], 'click', toggle_date_input_cal);
    EVENT.on(di[i], 'keypress', toggle_date_input_cal);
    EVENT.on(di[i], 'keydown', function(e) {EVENT.stopEvent(e);});
    EVENT.on(input_id + '_clear', 'click', clear_date_input);
    di[i].title='Click here to select date.';
    di[i].style.cssFloat='left';
    di[i].style.styleFloat='left';
    di[i].style.cursor='hand';
    di[i].style.cursor='pointer';
    DOM.setAttribute(di[i],'autocomplete','off');
  }
      }
    catch(err){ 
    }
}
function cal_handle_select (type,args,obj) {
  var dates = args[0];
  var date = dates[0];
  var year = date[0], month = date[1]-1, day = date[2];
  month_list = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
  short_month_list = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
  var month_name = month_list[month];
  var short_month_name = short_month_list[month];
  new_date = DOM.getAttribute(obj,'date_format');
  month++;
  if (month < 10) {
    month = '0' + month;
  }
  if (day < 10) {
    day = '0' + day;
  } 
  if (!new_date) {
    obj.value = year + '-' + month + '-' + day;
  }
  else {
    new_date = new_date.replace('year',year);
    new_date = new_date.replace('month',month);
    new_date = new_date.replace('day',day);
    new_date = new_date.replace('month_name',month_name);
    new_date = new_date.replace('short_month_name',short_month_name);
    obj.value = new_date;
  }
  var container = obj.id + '_cal_container';
  var c = DOM.get(container);
  c.style.display='none';
}
function toggle_date_input_cal (e) {
  var i = YAHOO.util.Event.getTarget(e);
  var xy = DOM.getXY(i);
  var x = xy[0];
  var y = xy[1]+20;
  var container = i.id + '_cal_container';
  var c = DOM.get(container);
  if (c.style.display=='block') {
    c.style.display='none';
  }
  else {
    var di = DOM.getElementsByClassName('date_input','input');
    for (var h=0;h<di.length;h++) {
      var co= di[h].id + '_cal_container';
      var j = DOM.get(co);
      j.style.display='none';
    }
    c.style.display='block';
    DOM.setXY(container,[x,y]);
    c.style.zIndex='9999';
  }
   YAHOO.util.Event.stopEvent(e);
}
function clear_date_input(e) {
  var l = YAHOO.util.Event.getTarget(e);
  var id_parts = l.id.split('_');
  id_parts.pop();
  input_id = id_parts.join('_');
  DOM.get(input_id).value='';
  var di = DOM.getElementsByClassName('date_input','input');
  for (var h=0;h<di.length;h++) {
    var co= di[h].id + '_cal_container';
    var j = DOM.get(co);
    j.style.display='none';
  }
  YAHOO.util.Event.stopEvent(e);
}

// EVENT.on(window,'load',render_date_inputs);

function render_menubars() {
  var menubars = DOM.getElementsByClassName('yuimenubar','div');
  for (var i in menubars) {
    mb = new MENUBAR(menubars[i], { autosubmenudisplay: true, hidedelay: 750, lazyload: true });
    mb.render();
  }
}
// EVENT.on(window,'load',render_menubars);

function toggle_debug_module(module) {
  var mod = module.substring(4); // Everything after yui_
  if (DOM.hasClass(module,'yuimenuitemlabel-checked')) {
    DOM.removeClass(module,'yuimenuitemlabel-checked');
    DOM.removeClass(DOM.get(module).parentNode,'yuimenuitem-checked');
  } 
  else {
    DOM.addClass(module,'yuimenuitemlabel-checked');
    DOM.addClass(DOM.get(module).parentNode,'yuimenuitem-checked');
  }
  var selected_items = DOM.getElementsByClassName('yuimenuitemlabel-checked','a','yui-debug');
  var selected_values = [];
  for (var i in selected_items) {
    mod_name = selected_items[i].id.substring(4);
    selected_values.push(mod_name);
  }
  var selected_values_str = selected_values.join(',');
  COOKIE.setSub('mdk-state','debug_modules',selected_values_str);
}
