
var digitalDoc = {

    //req:  null,
    xslStyleSheet: null,
    doc: null,
    droot: '',
    useInnerHTML: false,

    title: "",

    author: "",

    segments:  {},
    
    currPage: 1,
    
    getRequest: function() {
    	var req;
    	if (!window.ActiveXObject) {
	    req = new XMLHttpRequest;
	    useInnerHTML = true;
	} else {
	    req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return req;
    },
    initReq : function(url) {
    	var req = this.getRequest();
    	if (req) {
	   var thisObj = this;

	   // alert("request is not null" + this.req);
	   req.onreadystatechange = function(){thisObj.documentHandler(req)};
	   req.open("GET", url);
	   req.send(null);
	} else {
	  
	  alert ("request is null");
	}
    },

     xsltInitReq : function(url) {

	 var req = this.getRequest();
	 req.open("GET", this.xsltUrl, true);
  	 req.send(null);
	 //alert(req.responseText);
  	 var xslSS = req.responseXML;
	 return xslSS;
    },


    documentHandler: function(req) {
       if (req.readyState == 4) {
	   //  alert("got to readystate");
       	   // only if "OK"
	   // alert(req.status);
	   //if (req.status == 200) {

	   //   alert("got to completeness");
               this.doc = req.responseXML;
	       //alert(req.responseText);
		   this.segments = this.makeDoc();
		   this.handlePage();
		   /*
		   var xsltProcessor = new XSLTProcessor();
		   alert(xsltProcessor);
		   this.xslStyleSheet = this.xsltInitReq();
		   xsltProcessor.importStylesheet(this.xslStyleSheet);
		   var fragment = xsltProcessor.transformToFragment(this.doc, document);
		   alert("xsl transform: " + fragment);
		    var droot = document.getElementById("divroot");
		   
		    droot.appendChild(fragment);*/
	   /* } else {
	       alert("There was a problem retrieving the XML data:\n" +
		     req.statusText);
		     }*/
       }
    },

    makeDoc: function() {
    
    this.droot = document.getElementById("divroot");    
    
    var titles = this.doc.getElementsByTagName("title");
    this.title = titles[0].firstChild.nodeValue;

     var title =document.createElement("h3");
    title.innerHTML = "<span class='philTitle'>" + this.title + "<span>";
    this.droot.appendChild(title);

     var authors = this.doc.getElementsByTagName("author");
    this.author = authors[0].firstChild.nodeValue;
    
     var author =document.createElement("h4");
    author.innerHTML = "<span class='philTitle'>" + this.author + "<span>";
    this.droot.appendChild(author);
    
    var head = this.doc.getElementsByTagName("head");
   
    /*if (head[0]) {
     	var hd = this.handleHead(head[0], "h5");
    	this.droot.appendChild(hd);
	}*/
    var buffer = this.doc.getElementsByTagName("seg");
    return buffer;
    },

    handleHead : function(head, elementToCreate) {
		    var hd = document.createElement(elementToCreate);
		    var emph = head.getElementsByTagName("emph");
		   if (emph[0]) {
	    	      hd.innerHTML = "" + emph[0].firstChild.data;
		     
		   } else { 
		      hd.innerHTML = head.firstChild.nodeValue;
		      
		   }   
		   return hd; 
    },

    handlePara : function(para) {
    	  var p = document.createElement("p");
	  p.innerHTML  = para.firstChild.nodeValue;
	  return p;
    },

    traverseSeg: function(node , htmlParent) {
	if (node.hasChildNodes()) {
	    var children = node.childNodes; 
	    for (var j = 0; j < children.length; j ++) {
		var lastSubNode = '';
		if (children[j].nodeName == "#text") { 
		    var t = document.createTextNode(children[j].nodeValue);
		    htmlParent.appendChild(t);
		}
		if (children[j].nodeName == "head") {
		    var hd = document.createElement("h3");
		    this.traverseSeg(children[j], hd);
		    htmlParent.appendChild(hd);
		} 
		if (children[j].nodeName == "emph") {
		    var emph =document.createElement("em");
		    this.traverseSeg(children[j], emph);
		    htmlParent.appendChild(emph);
		}
		if (children[j].nodeName == "p") {
		    var para =document.createElement("p");
		    this.traverseSeg(children[j], para);
		    htmlParent.appendChild(para);
		}
       	    }
	} else {
	    //alert("asdf");
	    htmlParent.appendChild(node.data);
	}
	this.droot.appendChild(htmlParent);
    },

    handlePage: function () {
	//	alert("page");
	for (var i = 0; i < this.segments.length; i++) {
	    var seg = document.createElement("div");
	    seg.setAttribute("id",( "seg" + (i + 1)));
	    //   alert("seg: " + this.segments[i].nodeValue);
	    this.traverseSeg(this.segments[i], seg);
	    if (this.segments[i].getAttribute("id") == "s1") {
		var segment = document.getElementById("seg1");
		segment.style.display = '';
	    } else {
		seg.style.display = "none";
	    }
	}
    },
    
    displayDoc: function() {

    }
}
