var xmlDoc;
var dbase=new Object();
var imagePath="HeidiZito_files/";
var currentSlideIndex=0;
var currentSection="home";
var lastMenuClicked=0;
var galleryDiv;
var textTag="textContent";
readXMLMain();
function readXMLMain()
{
	if (/MSIE (\d+\.\d+);/.test(navigator.userAgent))textTag="text";
	if (window.XMLHttpRequest)
	{// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	}
	else
	{// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlhttp.open("GET","database.xml",false);
	xmlhttp.send();
	xmlDoc=xmlhttp.responseXML;
	createDbase(xmlDoc,dbase);
}
function createDbase(xmlref,objref)
{
	for(var i=0;i<xmlref.childNodes.length;i++)
	{
		var n=xmlref.childNodes[i];
		var title=n["nodeName"];
		if(title!="#text")
		{
			var val=n[textTag];
			if(getChildNodeCount(n)==0)objref[title]=val;
			else
			{
				var iscollection=1
				var first=getFirstNodeName(n);
				for(var z=0;z<n.childNodes.length;z++)
				{
					var nname=n.childNodes[z].nodeName;
					if(nname!="#text" && nname!=first)iscollection=0;
				}
				var newholder;
				if(iscollection)newholder=new Array();
				else newholder=new Object();
				if(isArray(objref))objref.push(newholder);
				else objref[title]=newholder;
				createDbase(n,newholder);
			}
		}
	}
}
function hideContentPanels()
{
	var cpanels=["paintings","graphics","videos","cv","contact","imageViewer","videoPanel","home","works"];
	for(var i=0;i<cpanels.length;i++)
	{
		document.getElementById(cpanels[i]).style.display="none";
	}
}
function isArray(a)
{
	return Object.prototype.toString.apply(a) === '[object Array]';
}
function sendEmail()
{
	var msg=document.getElementById("emailMessage");
	if(msg.value.length<2)
	{
		alert("Please enter a message. Please?");
		return;
	}
	document.forms["emailForm"].submit();
	alert("thank you for your feedback!");
}
function getFirstNodeName(ref)
{
	for(var i=0;i<ref.childNodes.length;i++)
	{
		if(ref.childNodes[i].nodeName!="#text")return ref.childNodes[i].nodeName;
	}
	return "";
}
function getChildNodeCount(ref)
{
	var c=0;
	for(var i=0;i<ref.childNodes.length;i++)
	{
		if(ref.childNodes[i].nodeName!="#text")c++;
	}
	return c;
}
function renderMediaPreviewByYear(mtype,contentDiv,clickCode)
{
	hideContentPanels();
	var x=xmlDoc.childNodes[0];
	var mediaThumbs=document.getElementById(contentDiv);
	var pdiv=mediaThumbs.parentNode;
	pdiv.style.display="block";
	mediaThumbs.innerHTML="";
	var mediaByYear=new Object();
	var activeYears=new Array();
	for(var p=0;p<dbase.artwork[mtype].length;p++)
	{
		var cmedia=dbase.artwork[mtype][p];
		if(typeof mediaByYear[cmedia.year]=="undefined")
        {
            mediaByYear[cmedia.year]=new Array();
            activeYears.push(cmedia.year);
        }
		var thumb=document.createElement("img");
        thumb.className="imageThumb";
		thumb.Xdata=cmedia;
        thumb.onclick=clickCode;
		thumb.src=imagePath+cmedia.thumbnail;
		mediaByYear[cmedia.year].push(thumb);
	}
	activeYears.sort();
	activeYears.reverse();
	for(var x=0;x<activeYears.length;x++)
	{
		var yr=activeYears[x];
		var subvw=createSubViewDiv(yr,mediaByYear[yr]);
		mediaThumbs.appendChild(subvw);
	}
	mediaThumbs.style.display="block";
}
function renderMediaPreview(mtype,contentDiv,clickCode)
{
	hideContentPanels();
	var x=xmlDoc.childNodes[0];
	var mediaThumbs=document.getElementById(contentDiv);
	var pdiv=mediaThumbs.parentNode;
	pdiv.style.display="block";
	mediaThumbs.innerHTML="";
	for(var p=0;p<dbase.artwork[mtype].length;p++)
	{
		var cmedia=dbase.artwork[mtype][p];
		var thumb=document.createElement("img");
        	thumb.className="imageThumb";
		thumb.Xdata=cmedia;
        	thumb.onclick=clickCode;
		thumb.src=imagePath+cmedia.thumbnail;
		mediaThumbs.appendChild(thumb);
	}
	mediaThumbs.style.display="block";
}
function renderPage(ref)
{
	hideContentPanels();
	ref.style.color="#000000";
	if(lastMenuClicked!=0)lastMenuClicked.style.color="#42413C";
	pname=ref.name;
	currentSection=pname;
	switch(pname)
	{
		case "paintings":
			renderMediaPreview("paintings",pname,thumbnailClicked);
			break;
		case "graphics":
			renderMediaPreview("graphics",pname,thumbnailClicked);
			break;
		case "videos":
			renderMediaPreview("videos",pname,videoClicked);
			break;
		default:
			document.getElementById(pname).style.display="block";
			break;
	}
	lastMenuClicked=ref;
}
function videoClicked()
{
	hideContentPanels();
	var vidiv=document.getElementById("videoPanel");
	var vidref=document.getElementById("videoObject");
	var t=document.getElementById("vidTitle");
	var y=document.getElementById("vidYear");
	t.innerHTML=this.Xdata.title;
	y.innerHTML=this.Xdata.year;
	vidref.src=imagePath+this.Xdata.filename;
	vidiv.style.display="block";
}

function createSubViewDiv(nameof,imglist)
{
	var sv=document.createElement("div");
	var svtitle=document.createElement("div");
	var svcontent=document.createElement("div");
	sv.className="contentSubView";
	svtitle.className="sectionTitle";
	svtitle.innerHTML=nameof;
	sv.appendChild(svtitle);
	sv.appendChild(svcontent);
	for(var i=0;i<imglist.length;i++)svcontent.appendChild(imglist[i]);
	return sv;
}
function showWork(w)
{
	var t=document.getElementById("workTitle");
	var s=document.getElementById("workSize");
	var y=document.getElementById("workYear");
	var galdiv=document.getElementById("fullViewDiv");
	galdiv.innerHTML="";
	if(typeof w.scrollwidth != 'undefined')
	{
		var si=scrollImage(imagePath+w.filename,parseInt(w.scrollwidth));
		galdiv.appendChild(si);
	}
	else
	{
		var p=document.createElement("img");
		p.src=imagePath+w.filename;
		galdiv.appendChild(p);
	}
	t.innerHTML=w.title;
	if(t.innerHTML=='undefined')t.innerHTML='';
	s.innerHTML=w.size;
	if(s.innerHTML=='undefined')s.innerHTML='';
	y.innerHTML=w.year;
	if(y.innerHTML=='undefined')y.innerHTML='';
	for(var i=0;i<dbase.artwork[currentSection].length;i++)if(dbase.artwork[currentSection][i]==w)currentSlideIndex=i;
}
function previousWork()
{
	if(currentSlideIndex>0)showWork(dbase.artwork[currentSection][currentSlideIndex-1]);
}
function nextWork()
{
	var acount=dbase.artwork[currentSection].length-1;
	if(currentSlideIndex<acount)showWork(dbase.artwork[currentSection][currentSlideIndex+1]);
}

function thumbnailClicked()
{
	hideContentPanels();
	showWork(this.Xdata);
	for(var i=0;i<dbase.artwork[currentSection].length;i++)if(dbase.artwork[currentSection][i]==this.Xdata)currentSlideIndex=i;
	var iview=document.getElementById("imageViewer");
	iview.style.display="block";	
}

function scrollImage(imgurl,w)
{
	var frameWidth=w;
	var scrollElement=document.createElement("div");
	scrollElement.className="slider";
	scrollElement.style.width=frameWidth+"px";
	scrollElement.style.backgroundImage="url("+imgurl+")";
	scrollElement.onload=setOffset;
	this.scrollContainer=scrollElement;
	var imgref=document.createElement("img");
	imgref.src=imgurl;
	imgref.onload=setSize;
	var imgWidth=imgref.width;
	var imgHeight=imgref.height;
	var offsetLeft=0;
	var windowWidth=scrollElement.clientWidth;
	var maxScroll=100;
	scrollElement.onmouseover=startScroll;
	scrollElement.onmouseout=endScroll;
	scrollElement.onmousemove=updateScroll;
	var pan=0;
	var panVal=0;
	var scrollit=0;
	function startScroll()
	{
		scrollit=1;
		offsetLeft=0;
		scrollImg();
	}
	function setOffset()
	{
		offsetLeft=this.offsetLeft;
	}
	function setSize()
	{
		imgWidth=this.width;
		imgHeight=this.height;
		maxScroll=(imgWidth-frameWidth)*-1;
		scrollElement.style.height=imgHeight+"px";
	}
	function updateScroll(ref)
	{
		var center=offsetLeft+(frameWidth/2);
		var cx=event.offsetX
		panVal=(center-cx)/40;
	}
	function scrollImg()
	{
		if(scrollit)
		{
			pan-=panVal;
			if(pan>0)pan=0;
			if(pan<maxScroll)pan=maxScroll;			
			scrollElement.style.backgroundPosition=pan+"px 0px";
			setTimeout(scrollImg,10);
		}
	}
	function endScroll()
	{
		scrollit=0;
	}
	return scrollElement;
}
