var app = Sys.Application;
app.add_load(applicationLoadHandler);


var treeView;
var sourceView;
function pageNavigate(sender, args) {
    if (!sourceView)
        return;
    var val = args.get_state().pageClientState || 0;
    //alert(val);
    if (val!=0) {
        var param = val.split(',');
        sourceView.set_currentItem(param[0]);
        sourceView.set_language(param[1]);
        sourceView.refresh();
        
    }
}
function applicationLoadHandler(sender, args) 
{
    //app.get_history().add_navigate(pageNavigate);
    treeView = $find('ctl00_MainContent_MainTreeView');
    sourceView = $find('ctl00_MainContent_CodeView');
    
    if (treeView && sourceView) {
        
        treeView.add_nodeClick(treeview_nodeClicked);
        var lang = $('select-language').getChildren();
        for(i=0;i<lang.length;i++) {
            $addHandler(lang[i].getElement('a'),'click', Function.createDelegate(this,selectLanguage));
        }
    }
}
function selectLanguage(e) {
    var targetElement = $(e.target);
    
    e.preventDefault();
    $('select-language').getChildren().each(function(item) {
        item.getElement('a').removeClass('selected');
    });
    targetElement.addClass('selected');
    sourceView.set_language(targetElement.getParent().getProperty('class'));
    sourceView.refresh();
    Sys.Application.get_history().addHistoryPoint({pageClientState: getState()}, sourceView._currentPath);
}
function getState() {
    return sourceView.get_currentItem() + "," + sourceView.get_language();
}
var lastNode;
function treeview_nodeClicked(sender, args) {
    if (!args.clickedText)
        return;
    if (args.clickedNode==lastNode)
        return;
    sourceView.set_currentItem(args.clickedNode);
    sourceView.refresh();
    lastNode = args.clickedNode;
    Sys.Application.get_history().addHistoryPoint({pageClientState: getState()},document.title);
    
}
