﻿// JScript File

var allNodes = new Array();
var modelView = new model();
var taglist;
var viewMode = 'Thumbs';
var _modelTree;
var whichSection = 'bio';
function createData()
{
//    req=sendRequest("XMLFile.xml");
    req=sendRequest("http://research.microsoft.com/~sdrucker/researchJSON.htm");
}
function startup()
{
    whichSection = 'bio';
    $('bio').setStyle({opacity: 1.0});
    Effect.Fade('cv', {duration: 0.0});
    Effect.Fade('publications', {duration: 0.0});    
    Effect.Fade('research', {duration: 0.0});      
}

function getEvent(e)
{
    return(window.event || e);
}
function getEventSrc(e)
{
    return(e.srcElement || e.target);
}

function onSectionPress(e)
{
    ele = getEventSrc(getEvent(e));
    switchSection(ele.innerHTML);  
}

function switchSection(sectName)
{
    if (sectName == 'bio ') sectName = 'bio';
    if (sectName == 'publications ') sectName = 'publications';
    if (sectName == 'cv ') sectName = 'cv';
    if (sectName == 'research ') sectName = 'research';
    if (whichSection == sectName) return;
    if (sectName != 'research') {
        Effect.Fade(whichSection, {duration: 0.5, queue: 'front'});
        Effect.Appear(sectName, {duration: 0.5, queue: 'end'}); 
    } else {
       Effect.Fade(whichSection, {duration: 0.0, queue: 'front'});
       Element.setOpacity('research', 1.0); 
       $('canvas').show();      
       $('research').show();
    }
    whichSection = sectName;
    
    if (sectName == 'research') {        
        om = document.getElementById("objectModel");
        if (!om.model) {        
            initializePage();
        }        
        //Effect.Fade('headPic', {duration: 0.5});        
    } else {
       Effect.Appear('headPic', {duration: 1.0});
    }

}

function sortTextList(e)
{
    ele = getEventSrc(getEvent(e));
    so = ele.innerHTML;
    if (so == 'year') {
        modelView.sortOrder('textTableBody', textRep,'year');
    } else {
        modelView.sortOrder('textTableBody', textRep,'project');
    }
    modelView.layoutSelected(0.5);
    if (modelView.sortOrderKeys[so] == 1) {
        orderString = ' (ascending)';
    } else {
        orderString = ' (descending)';
    }
    solabel = $('sortOrder');
    solabel.innerHTML = "Sorted by: " + so + orderString;
}
function initializePage()
{    
    createData();
    setupSliders();
    om = document.getElementById("objectModel");
    om.model = modelView;
}

function clickOK()
{
    // ifr = document.parentWindow.frameElement;    
    parent.showSelected();   
}

function clickCancel()
{
    parent.clickCancel();
}

function setupSliders()
{
   sliders = carpeGetElementsByClass(carpeSliderClassName) // Find the horizontal sliders.
	for (i = 0; i < sliders.length; i++) {
		sliders[i].onmousedown = slide // Attach event listener.
		sliders[i].callBack = sliderCallback;
	}
	displays = carpeGetElementsByClass(carpeSliderDisplayClassName) // Find the displays.
	for (i = 0; i < displays.length; i++) {
		displays[i].onfocus = focusDisplay // Attach event listener.
	}

}

function getBody()
{
    return(document.documentElement || document.body);
}

function getWidth()
{
    var b = getBody();
    if(b)
    {
        return b.clientWidth;
    }
    else
    {
        return 0;
    }        
}
function computeColumns()
{
    dims = Element.getDimensions("canvas");
    
//    el = document.getElementById("canvas");
//    w = el.offsetWidth;
//    modelView.columns = Math.floor((w / (modelView.elementWidth+modelView.spacing-15)))+1;
    w = dims.width;
    if (w==0) {
        w = getWidth()-600;
    }    
    modelView.columns = Math.floor((w / (modelView.spacing+15)));
  
    if (modelView.columns < 1) modelView.columns = 1;
    
}

function sliderCallback(e)
{
 //   ts = getEventSrc(getEvent(e));
//    var info = document.getElementById("previewText");
//    info.innerHTML = slider.value;
    val = slider.value * 4.5;
    modelView.spacing = 70+val;
    x = 60 + val;
    y = 0.666 * x;    
    modelView.setAllSize(x,y);
    computeColumns();        
    modelView.layoutVisible(0);
    
}




function getXMLHTTPRequest() 
{
    var xRequest = null;
    if (window.XMLHttpRequest) {
        xRequest = new XMLHttpRequest();
    } else if (typeof ActiveXObject != "undefined") {
        xRequest = ActiveXObject("Microsoft.XMLHTTP");
    }
    return xRequest;
}

var READY_STATE_UNINITIALIZED=0;
var READY_STATE_LOADING=1;
var READY_STATE_LOADED=2;
var READY_STATE_INTERACTIVE=3;
var READY_STATE_COMPLETE=4;
var req;
function onReadyStateChange()
{
    var ready = req.readyState;
    var data = null;
    if (ready == READY_STATE_COMPLETE) {
        var jsString = req.responseText;
        parseData(jsString);
    } else {
        data = "loading..."+ready;
    }
    a=1;
}

function parseData(aString) 
{
    _modelTree = eval("(" + aString + ")");
    loadData(_modelTree);
}

function sendRequest(url, params, HttpMethod) 
{
    if (!HttpMethod) {
        HttpMethod = "GET";
    }
    req = getXMLHTTPRequest();
    if (req) {
        req.onreadystatechange = onReadyStateChange;
        req.open(HttpMethod, url, true);
        req.setRequestHeader("Content-Type", "test/xml");
        req.send(params);
    }
    return(req);
}



function loadData(topdata)
{
    count = 0;
    topdata.each( function(item) {
        theTags = item.tags;
        theImg = item.img;
        theText = item.caption;
        theID = item.id;
        bodyText = item.caption;
        someNode = new node(theText,theImg,theTags,bodyText,theID, modelView);
        someNode.pabstract = item.pabstract;            
        someNode.reference = item.reference;
        someNode.pdf = item.pdf;
        someNode.video = item.video;
        someNode.moreinfo = item.moreinfo;
        ele = someNode.getRepElement();            
        modelView.nodeList.push(someNode);
        count++;
    });

    modelView.initTagLists('tagList');    
    modelView.selectCallback = 'showElement';
    modelView.setupContainer('canvas', imgRep);
    //modelView.setupContainer('textList', textRep); 
    modelView.setupContainer('textTableBody', textRep); 
    modelView.setupCounter('totalCount');
    modelView.addAllToView(imgRep);
    modelView.addAllToView(textRep);
    $('textTableBody').style.display = 'block';
    modelView.currentRep = imgRep;
    modelView.totalCount = count;
    el = document.getElementById("canvas"); 
    modelView.leftSide = 20;
    modelView.topSide = 20;   
    w = el.offsetWidth;
    x = 164;
    y = 109;
    modelView.spacing = 174;
    computeColumns();
    //modelView.columns = 3;
    modelView.setAllSize(x,y);
    modelView.layoutAll(0);    
    pa = $('previewArea');
    pa.style.display = 'none';
    showThumbs();
}

function showElement(mo)
{
    Effect.Fade('headPic', {duration: 0.1});    
    pa = $('previewArea');
    pa.style.display = 'block';
    var im = document.getElementById("previewImage");
    im.src =  mo.reps[0].img.src;
    im.style.display = 'block';
    el = $("captionText");
    if (el) {
        el.innerHTML = mo.text;
    }
    info = $('previewText');
    if (info) {    
        info.innerHTML = mo.pabstract;
    }
    
    el = $('pdf');
    if (mo.pdf) {        
        el.href = mo.pdf; 
        el.style.display = 'block';               
    } else {
        el.style.display = 'none';
    }
    
    el = $('video');
    if (mo.video) {        
        el.href = mo.video;                
        el.style.display = 'block';
    } else {
        el.style.display = 'none';
    }
    
    el = $('moreinfo');
    if (mo.moreinfo) {        
        el.href = mo.moreinfo;                
        el.style.display = 'block';
    } else {
        el.style.display = 'none';
    }
    
    checkForSelected();    
}

function clearAllSelect()
{
    modelView.clearAllSelection();
    var im = document.getElementById("previewImage");
    Effect.Appear('headPic', {duration: 0.3});   
    var info = document.getElementById("previewText");
    info.innerHTML = '';
    ct = $('captionText');
    ct.innerHTML = '';
    pa = $('previewArea');
    pa.style.display = 'none';
}

function doLayoutSelected()
{
    modelView.layoutSelected(0.5);
    var el = document.getElementById("showAll");
    el.style.color = "Red";
    var el = document.getElementById("filter");
    el.style.color = "Black";
}


function doLayoutAll()
{
//    var im = document.getElementById("previewImage");
//    im.style.display = "none";
//    var info = document.getElementById("previewText");
//    info.innerHTML = '';
    modelView.clearAllSelection();
/*    var el = document.getElementById("filter");
    el.style.color = "Black"; */
    modelView.layoutAll(0.5);
    var el = document.getElementById("showAll");
    el.style.color = "White";        

}

function showText()
{
    canv = document.getElementById("canvas");
    canv.style.display = "none";
    textl = document.getElementById("textList");
    textl.style.display = "block";
    modelView.currentRep = textRep;
    el = document.getElementById("slider1");
    el.style.display = "none";    
    modelView.layoutSelected(0.5);
}

function showThumbs()
{
    canv = document.getElementById("canvas");
    canv.style.display = "block";
    textl = document.getElementById("textList");
    textl.style.display = "none";
    modelView.currentRep = imgRep;
    el = document.getElementById("slider1");
    if (el) {
        el.style.display = "block";
    }    
    modelView.layoutSelected(0.5);
}

function checkForSelected()
{   
}
