importXML();
paperOn=true;
projNo=1;

function assignVars() {
    //function Project(imgurl, caption, linkurl, isvideo, width, height) {

    numberOfProjects=29;
    proj=new Array(numberOfProjects);
    proj[0]=new Project("images/photo2.jpg","Project 1","",false,550,400);
    proj[1]=new Project("images/gayhead_cliffs.jpg","Project 2","",false,550,400);
    proj[2]=new Project("images/lucy_vincent_rocks.jpg","Project 3","",false,550,400);
    proj[3]=new Project("images/west_tisbury.jpg","Project 4","",false,550,400);
    proj[4]=new Project("images/chillmark_pond.jpg","Project 5","",false,550,400);
    proj[5]=new Project("images/freebird.jpg","Project 6","",false,550,400);
    proj[6]=new Project("images/rocky_ocean2.jpg","Project 13","",false,550,400);
    proj[7]=new Project("images/ocean.jpg","Project 7","",false,550,400);
    proj[8]=new Project("images/ocean2.jpg","Project 8","",false,550,400);
    proj[9]=new Project("images/rocky_ocean.jpg","Project 14","",true,550,400);
    proj[10]=new Project("images/tree.jpg","Project 9","",false,550,400);
    proj[11]=new Project("images/sunset.jpg","Project 10","",false,550,400);
    proj[12]=new Project("images/snowfall.jpg","Project 11","",false,550,400);
    proj[13]=new Project("images/sky.jpg","Project 12","",false,550,400);
    proj[14]=new Project("images/ponds.jpg.jpg","Project 15","",false,550,400);
    proj[15]=new Project("images/ponds2.jpg","Project 16","",false,550,400);    
    proj[16]=new Project("images/meadow3.jpg","Project 17","",false,550,400);
    proj[17]=new Project("images/meadow2.jpg","Project 18","",false,550,400);
    proj[18]=new Project("images/meadow.jpg","Project 19","",true,550,400);
    proj[19]=new Project("images/landscape1.jpg","Project 20","",false,550,400);
    proj[20]=new Project("images/horses.jpg","Project 21","",false,550,400);
    proj[21]=new Project("images/harbor2.jpg","Project 22","",false,550,400);
    proj[22]=new Project("images/harbor.jpg","Project 23","",false,550,400);
    proj[23]=new Project("images/hammok.jpg","Project 24","",false,550,400);
    proj[24]=new Project("images/dog.jpg","Project 25","",false,550,400);
    proj[25]=new Project("images/cliffs2.jpg","Project 26","",true,550,400);
    proj[26]=new Project("images/cliffs1.jpg","Project 27","",false,550,400);
    proj[27]=new Project("images/boat_meadow.jpg","Project 28","",false,550,400);
    proj[28]=new Project("images/boat_horizon.jpg","Project 29","",true,550,400);
    proj[29]=new Project("images/boat_harbor.jpg","Project 30","",false,550,400);

    
}

function importXML2() {
    try {
        xmlhttp = new XMLHttpRequest();
        t=4;
    } catch (e) {xmlhttp=false;}
    if (!xmlhttp) try {
        xmlhttp = window.createRequest();
        t=5;
    } catch (e) {xmlhttp=false;}
    if (!xmlhttp) try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        t=6;
    } catch (e) {xmlhttp=false;}
    if (!xmlhttp) try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {
        xmlhttp=false;
        alert('This website may not display properly on your browser');
        assignVars();
        return;
    }

    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4) {
            xmlDoc=xmlhttp.responseXML;
            loadXMLVars();
        }
    }

    try {
        xmlhttp.open("GET", "projects.xml",true);
        xmlhttp.send(null);
    } catch(e) {
        alert('Could not load XML file.  This website may not display properly on your browser');
        return;
    }

}


function importXML() {
    if (window.ActiveXObject) {
        try {
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            t=1;
        } catch(e) {xmlDoc=false;}
        if (!xmlDoc) try {
            xmlDoc=new ActiveXObject("MSXML2.DOMDocument.4.0");
            t=2;
        } catch(e) {
            importXML2();
            return;
        }
        xmlDoc.onreadystatechange = function () {
            if (xmlDoc.readyState == 4) loadXMLVars();
        }
    }
    else if (document.implementation && document.implementation.createDocument) {
        xmlDoc = document.implementation.createDocument("", "", null);
        try {
            xmlDoc.onload = loadXMLVars;
            t=3;
        } catch(e) {
            importXML2();
            return;
        }
    }
    else {
        importXML2();
    }

    try {
        xmlDoc.load("projects.xml");
    } catch(e) {
        importXML2();
    }
}

function Project(imgurl, caption, linkurl, isvideo, width, height) {
    this.imgURL=imgurl;
    this.caption=caption;
    this.linkURL=linkurl;
    this.isVideo=isvideo;
    this.width=width;
    this.height=height;
}

function loadXMLVars() {
    var x=xmlDoc.firstChild.getElementsByTagName("project");
    proj=new Array(x.length);
    for (i=0;i<x.length;i++) {
        proj[i]=new Project("","",false,false,550,400);
        for (j=0;j<x[i].childNodes.length;j++) {
            if (x[i].childNodes[j].nodeType != 1) continue;
            if (x[i].childNodes[j].nodeName=="imageURL") {
              proj[i].imgURL=x[i].childNodes[j].firstChild.nodeValue;
              proj[i].isVideo=false;
            }
            if (x[i].childNodes[j].nodeName=="videoURL") {
              proj[i].imgURL=x[i].childNodes[j].firstChild.nodeValue;
              proj[i].isVideo=true;
              if (x[i].childNodes[j].getAttribute("width")) proj[i].width=x[i].childNodes[j].getAttribute("width");
              if (x[i].childNodes[j].getAttribute("height")) proj[i].height=x[i].childNodes[j].getAttribute("height");
            }
            if (x[i].childNodes[j].nodeName=="caption") proj[i].caption=x[i].childNodes[j].firstChild.nodeValue;
            if (x[i].childNodes[j].nodeName=="website") proj[i].linkURL=x[i].childNodes[j].firstChild.nodeValue;
        }
    }
}



function togglePaper() {
    if (paperOn) {
        document.getElementById("fakepaper").style.visibility="hidden";
        paperOn=false;
        cycleProject(0);
    }
    else {
        document.getElementById("fakepaper").style.visibility="visible";
        paperOn=true;
        hideCaption();
        if (proj[projNo-1].isVideo) document.getElementById("pimg").innerHTML="";
    }
}

function hideCaption() {
    document.getElementById("popcaption").style.visibility="hidden";
    captionOn=false;
}

function showCaption() {
    document.getElementById("popcaption").style.visibility="visible";
    captionOn=true;
}

function parseLink(s) {
    var tokens=s.split(" ");
    var i;
    for (i=0;i<tokens.length;i++) {
        if (tokens[i].substring(0,7)=="http://") tokens[i]="<a href=\""+tokens[i]+"\" target=\"_blank\">"+tokens[i]+"</a>";
        else if (tokens[i].substring(0,4)=="www.") tokens[i]="<a href=\"http://"+tokens[i]+"\" target=\"_blank\">"+tokens[i]+"</a>";
    }
    return(tokens.join(" "));
}

function cycleProject(dir) {
    if (proj[projNo-1].isVideo) document.video.Stop();

    projNo+=dir;
    if (projNo<1) {
      projNo=1;
      togglePaper();
    }
    if (projNo>proj.length) {
      projNo=1;
      togglePaper();
    }

    var p=proj[projNo-1];
    var imgHTML;

    if (p.isVideo) {
        classinfo="classid=\"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B\" codebase=\"http://www.apple.com/qtactivex/qtplugin.cab\"";
        sizeinfo="width=\""+p.width+"\" height=\""+p.height+"\"";
        imgHTML="<OBJECT "+classinfo+" "+sizeinfo+" id=\"video\">"; 
        imgHTML+='<embed src="'+p.imgURL+'" '+sizeinfo+' autoplay="true" controller="true" enablejavascript="true" name="video" pluginspage="http://www.apple.com/quicktime/download/">';
        imgHTML+="</embed></object>";
    }
    else imgHTML="<img src='"+p.imgURL+"'>";
    if (p.linkURL!=false) {
        document.getElementById("plink").innerHTML=parseLink(p.linkURL);
    }
    else document.getElementById("plink").innerHTML="";
    document.getElementById("pimg").innerHTML=imgHTML;
    document.getElementById("popcaptiontxt").innerHTML=p.caption;
    document.getElementById("projNum").innerHTML=projNo+" of "+proj.length;
    hideCaption();
}


