var isIE;
var req;
var theCalendarDiv;

function initCalendar() {
	theCalendarDiv = document.getElementById("calendar");
	getCalendar();
}

function initRequest(url) {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        isIE = true;
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
}

function getCalendar() {
    var url = "XMLCalendarServlet";
    var req = initRequest(url);
	
	req.onreadystatechange = function() {
			if (req.readyState == 4) {
                if (req.status == 200) {
		   			//parseMessages(req.responseXML);
		   			updateCalendar(req.responseText);
                }
            }
	};
	req.open("GET", url, true);
	req.send(null);
}

function showCalendarDate(date) {
	
	var ts = Date.parse( new Date() );
	var url = "XMLCalendarServlet?date="+date+"&dontcacheme="+ts;
    var req = initRequest(url);

	req.onreadystatechange = function() {
            if (req.readyState == 4) {
                if (req.status == 200) {
		   			updateCalendar(req.responseText);
                }
            }
	};
	req.open("GET", url, true);
	req.send(null);
}

function updateCalendar(responseXML) {
	theCalendarDiv.innerHTML = responseXML;
	showCalendarDetails("latest");
	//showEventDetails("<p>&nbsp;</p>");
}

function showCalendarDetails(date) {
	
	var ts = Date.parse( new Date() );
	var url = "EventDetailServlet?date="+date+"&dontcacheme="+ts;
    var req = initRequest(url);

	req.onreadystatechange = function() {
            if (req.readyState == 4) {
                if (req.status == 200) {
		   			showEventDetails(req.responseText);
                }
            }
	};
	req.open("GET", url, true);
	req.send(null);
}

function showEventDetails(responseText) {
	var theDetailsDiv = document.getElementById("events");
	theDetailsDiv.innerHTML = responseText;
}

function initChanges() {
	var theDiv = document.getElementById("recentChanges");
	getChanges(theDiv);
}

function getChanges(theDiv) {
	var ts = Date.parse( new Date() );
    var url = "LatestChangesServlet?ts="+ts;
    var req = initRequest(url);
	
	req.onreadystatechange = function() {
			if (req.readyState == 4) {
                if (req.status == 200) {
		   			theDiv.innerHTML = req.responseText;
                }
            }
	};
	req.open("GET", url, true);
	req.send(null);
}

function initMru() {
	var theMruDiv = document.getElementById("mru");
	getMRU(theMruDiv);
}

function getMRU(theMruDiv) {
    var url = "RepeaterServlet";
    var req = initRequest(url);
	
	req.onreadystatechange = function() {
			if (req.readyState == 4) {
                if (req.status == 200) {
		   			//parseMessages(req.responseXML);
		   			updateMru(req.responseXML,theMruDiv);
                }
            }
	};
	req.open("GET", url, true);
	req.send(null);
}

function updateMru(responseXML,theMruDiv) {

	var mru = responseXML.getElementsByTagName("cross-sell")[0];
	if (mru.childNodes.length > 0) {
    		resetMruDiv(theMruDiv,"");
	} else {
		resetMruDiv(theMruDiv,"There was an error accessing the server");
		return;
    }
   	for (loop = 0; loop < mru.childNodes.length; loop++) {
		var item = mru.childNodes[loop];
		if (item.nodeType != 1) item = mru.childNodes[++loop];
		var product = item.getElementsByTagName("product")[0];
		var id = product.getAttribute("id");
		var ean = product.getElementsByTagName("ean")[0];
		var title = product.getElementsByTagName("title")[0];
		var titleValue;
		if (title.childNodes[0] == null) titleValue = "No description available";
		else titleValue = title.childNodes[0].nodeValue;
		updateMruDiv(theMruDiv, id, ean.childNodes[0].nodeValue, titleValue);
	}
}

function resetMruDiv(theMruDiv, text) {
	if (theMruDiv && theMruDiv.childNodes) {
		for (loop = theMruDiv.childNodes.length -1; loop >= 0 ; loop--) {
    		theMruDiv.removeChild(theMruDiv.childNodes[loop]);
    	}
    }
	if (text!=("")) {
		var pElement = document.createElement("p");
		pElement.setAttribute("class", "error");
    	pElement.appendChild(document.createTextNode(text));
		theMruDiv.appendChild(pElement);
    }
}

function updateMruDiv(theMruDiv, id, ean, title) {
	var divElement = document.createElement("div");
	var linkElement = document.createElement("a");
	var brElement = document.createElement("br");
	
	linkElement.setAttribute("href", "http://www.standards.co.nz/web-shop/?action=viewSearchProduct&mod=catalog&pid="+id);
	linkElement.setAttribute("title", "See details");
	linkElement.appendChild(document.createTextNode(ean));
	
	divElement.appendChild(linkElement);
	divElement.appendChild(brElement);
	divElement.appendChild(document.createTextNode(title));

	theMruDiv.appendChild(divElement);
}

function getDocuments(id) {
	var navDiv = document.getElementById("documentStructure");
	var mainDiv = document.getElementById("viewDocuments");
	var ts = Date.parse( new Date() );
	var navURL = "DocumentDisplayServlet?type=nav&id="+id+"&dontcacheme="+ts;
	var docsURL = "DocumentDisplayServlet?type=docs&id="+id+"&dontcacheme="+ts;
	
    var req = initRequest(navURL);
	req.onreadystatechange = function() {
			if (req.readyState == 4) {
                if (req.status == 200) {
		   			navDiv.innerHTML = req.responseText;
		   			showDocs(mainDiv,docsURL,false);
                }
            }
	};
	req.open("GET", navURL, true);
	req.send(null);
}

function openFolder(id, folder,showAll) {
	var navDiv = document.getElementById("documentStructure");
	var mainDiv = document.getElementById("viewDocuments");
	var ts = Date.parse( new Date() );
	var navURL = "DocumentDisplayServlet?type=nav&id="+id+"&nav="+folder+"&dontcacheme="+ts;;
	var docsURL = "DocumentDisplayServlet?type=docs&id="+id+"&dontcacheme="+ts;;
	
	if (showAll == 'true') {
		docsURL = docsURL+"&all=true";
	}
	
    var req = initRequest(navURL);
	req.onreadystatechange = function() {
			if (req.readyState == 4) {
                if (req.status == 200) {
		   			navDiv.innerHTML = req.responseText;
		   			showDocs(mainDiv,docsURL);
                }
            }
	};
	req.open("GET", navURL, true);
	req.send(null);
}

function showDocs(div,url) {
	var req = initRequest(url);
	req.onreadystatechange = function() {
			if (req.readyState == 4) {
                if (req.status == 200) {
		   			div.innerHTML = req.responseText;
                }
            }
	};
	req.open("GET", url, true);
	req.send(null);


}

function showAllDocs(id) {

	var mainDiv = document.getElementById("viewDocuments");
	var navURL = "DisplayAllDocuments?id="+id;
	
	var req = initRequest(navURL);
	req.onreadystatechange = function() {
			if (req.readyState == 4) {
        if (req.status == 200) {
		   	  mainDiv.innerHTML = req.responseText;
        }
      }
	};
	req.open("GET", navURL, true);
	req.send(null);
}
