// JavaScript Document

/******************************************************************
WriteLayer: common function used to write all data to the page
*******************************************************************/
UtilObject = new Object();
UtilObject.WriteLayer = function(ID,parentID,sText) { 
	 if (document.layers) { 
		var oLayer; 
		if(parentID){ 
			oLayer = eval('document.' + parentID + '.document.' + ID + '.document'); 
		}else{ 
		 	oLayer = document.layers[ID].document; 
		} 
		oLayer.open(); 
		oLayer.write(sText); 
		oLayer.close(); 
	 } else if (parseInt(navigator.appVersion)>=5&&navigator.appName=="Netscape") { 
	   document.getElementById(ID).innerHTML = sText; 
	 } else if (document.all) 
		document.all[ID].innerHTML = sText 
} 
/******************************************************************
ImportXML: common function used call all xml
*******************************************************************/
UtilObject.importXML = function(obj,xml,xmlLoc)
{
	var http_request = false;
	
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
	  
		http_request = new XMLHttpRequest();
		
		if (http_request.overrideMimeType) {
		http_request.overrideMimeType('text/xml');
		}
		
		http_request.onreadystatechange = function () {
			if (http_request.readyState == 4) {
				var xmldoc = http_request.responseXML;
				//once finished call the appropriate function to store the xml
				obj.storeXML(xmldoc)
			}
		};
	  //pass in time stamp sp safari doesn't cache		
		  http_request.open('GET', xmlLoc+xml+"?"+ new Date().getTime(), true);
		  http_request.send(null);
		  
	} else if (window.ActiveXObject) { // IE
	 	http_request = new ActiveXObject("Microsoft.XMLDOM");
		http_request.onreadystatechange = function () {
			//once finished call the appropriate function to store the xml
			if (http_request.readyState == 4) 
				obj.storeXML(http_request);
		};		
	var xmlName = xml;
	http_request.load(xmlLoc+xmlName);		
  }
  if (!http_request) {
	 alert('Cannot create XMLHTTP instance');
	 return false;
  }
}

pageData = new Object();

/******************************************************************
SetData: Called from the html page to get the ball rolling
*******************************************************************/
pageData.setData = function(xmlLocation,pageType,dataDivId,pageId,zone,type){
	//find the current language	
	
	this.pageId = pageId;
	this.zone = zone;
	this.type = type;
	
	if(this.zone == null){
		this.zone = "A";	
	}
	//this.lang="fr";
	//set properties
	this.xmlLoc = xmlLocation;
	this.dataDivId = dataDivId;
	//call to get the features
	this.pageType = pageType;
	switch (pageType){
	
		case "detail":
			this.xmlFile = "dataPoints"+zone+".xml";
			pageData.parseData = pageData.parseDataDetail;
			break;
		case "index":
			this.xmlFile = "dataPointsA.xml";
			this.xmlFile1 = "dataPointsB.xml";
			this.xmlFile2 = "dataPointsC.xml";
			this.multi = 0;			
			pageData.parseData = pageData.parseDataIndex;			
			break;
		case "indIndex":
			this.xmlFile = "dataPoints"+zone+".xml";
			pageData.parseData = pageData.parseDataIndIndex;				
			break;
		
		
	}
	this.getData(this.xmlFile);
}

pageData.getData = function(xmlFile){
	var xml=xmlFile;
	UtilObject.importXML(pageData,xml,this.xmlLoc);
}



pageData.storeXML = function(xml){
	
	
	//find zone
	//var zoneNodes = xml.getElementsByTagName('zone');
	
	
	/*for(var i =0;i<zoneNodes.childNodes.length;i++){
		if(zoneNodes.childNodes[i].attributes.id == "A"){
			zoneNodes = zoneNodes.childNodes[i];
			break;
		}	
		
	}*/
	
	var dataArr = pageData.parseXML(xml);	
	
	if(this.pageType == "index"){
		this.multi++;
		//alert(this.multi)
		if(this.multi == 3){
			
			this["dataArray"+this.multi] = dataArr;
			this.parseData(this["dataArray"+1],this["dataArray"+2],this["dataArray"+this.multi]);
			return;
		}else{
			this["dataArray"+this.multi] = dataArr
			this.getData(this["xmlFile"+this.multi]);
			return;
		}
		
	}
	this.parseData(dataArr);
}

pageData.parseXML = function(xml){
	var nodes = xml.getElementsByTagName('obj');
	var total_nodes = nodes.length;
	var dataArr = new Array();
	var tempObj = [];
	
	
	
	for(var i=0; i<total_nodes; i++){
		
		var tempObj = [];
		
		
		for(var j = 0;j< nodes[i].attributes.length;j++){
			tempObj[nodes[i].attributes[j].name] = nodes[i].attributes[j].value;		
		}
		
		//default
		//if(this.pageId == undefined){
			//this.pageId	= tempObj.id;
		//}
		
		if (this.pageId == tempObj.id || this.pageId == undefined){		
				
			for(var j = 0;j < nodes[i].childNodes.length;j++ ){
				
				var textNodes = nodes[i].childNodes[j];
			
				if(textNodes.firstChild != undefined){
					tempObj[textNodes.nodeName] = textNodes.firstChild.nodeValue;	
				}else{
					tempObj[textNodes.nodeName] = "";	
				}
			
			}
			
			tempObj.zone = this.zone;
			dataArr.push(tempObj);
			if(this.pageId != undefined){
				return dataArr;
				break;
			}
		}
	}	
	
	if(this.zone == "A"){
		this.zone = "B";	
	}	else{
		this.zone = "C";	
	}

	return dataArr;
	
}

pageData.parseDataIndex = function(dataArr1,dataArr2,dataArr3){
	var temp = dataArr1.length ;
	newArray1 = dataArr1.concat(dataArr2);
	newArray2 = newArray1.concat(dataArr3);
	
	
	var exhibitArray = [];
	var projectArray = [];
	
	for(var i = 0;i<newArray2.length;i++){
		if(newArray2[i].type == "Project"){
			projectArray.push(newArray2[i]);
		}else{
			exhibitArray.push(newArray2[i]);
		}
	}
	
	this.buildIndexPages(exhibitArray,"id",this.dataDivId[0]);
	this.buildIndexPages(projectArray,"id",this.dataDivId[1]);
	/*var sortBy = "title";
	
	exhibitArray.sort(function (a, b) {
		if (a[sortBy] == b[sortBy]) {
		return 0;
		}
		if (a[sortBy] < b[sortBy]) {
		return -1;
		}
		return 1;
		});
	
	var sortBy = "title";
	
	projectArray.sort(function (a, b) {
		if (a[sortBy] == b[sortBy]) {
		return 0;
		}
		if (a[sortBy] < b[sortBy]) {
		return -1;
		}
		return 1;
		});


	
	for(var i = 0;i<newArray2.length;i++){	
		if(!(newArray2[i].id=="I" || (newArray2[i].id=="40b" && newArray2[i].zone=="C") || (newArray2[i].id=="40c" && newArray2[i].zone=="C"))){
			
			if(this.type == "Exhibition"){
				displayData += '<div class="result_title"><a href="detail.html?id='+dataArr1[i].id+'&zone='+dataArr1[i].zone+'" ><i>'+dataArr1[i].Title+'</i>, '+dataArr1[i].Artist+'</a></div>	';	
			}else{
				//switch to partner
				displayData += '<div class="result_title"><a href="detail.html?id='+dataArr1[i].id+'&zone='+dataArr1[i].zone+'" >'+dataArr1[i].Artist+', <i>'+dataArr1[i].Title+'</i></a></div>	';	
			}
			
			
			//displayData += '<div class="result_title"><a href="detail.html?id='+newArray2[i].id+'&zone='+newArray2[i].zone+'" >'+newArray2[i].Artist+'</a></div>	';		
			//displayData += '<div class="result_abstract">'+newArray2[i].Title+'</div><div class="result_abstract">Zone:'+newArray2[i].zone+'</div><div class="result_link"><a href="detail.html?id='+newArray2[i].id+'&zone='+newArray2[i].zone+'" >more details</a></div><br /><br />';
		}
	}
	*/
	
	
	
}


pageData.buildIndexPages = function(dataArray, sortLabel, displayDiv){
	var sortBy = sortLabel;
	var displayData ='';
	
	dataArray.sort(function (a, b) {
		if (a[sortBy] == b[sortBy]) {
		return 0;
		}
		if (a[sortBy] < b[sortBy]) {
		return -1;
		}
		return 1;
		});
	
	
	for(var i = 0;i<dataArray.length;i++){	
		if(!(dataArray[i].id=="I" || (dataArray[i].id=="40b" && dataArray[i].zone=="C") || (dataArray[i].id=="40c" && dataArray[i].zone=="C"))){			
			if(dataArray[i].type == "Exhibition"){
				displayData += '<div class="result_abstract"><a href="detail.html?id='+dataArray[i].id+'&zone='+dataArray[i].zone+'" >';
				if(dataArray[i].Artist != ''){
					displayData += dataArray[i].Artist;
					if(dataArray[i].Title != ''){
						displayData +=', ';
					}
				}
				
				displayData += '<i>'+dataArray[i].Title+'</i></a></div>	';	
			}else{
				//switch to partner
				displayData += '<div class="result_abstract"><a href="detail.html?id='+dataArray[i].id+'&zone='+dataArray[i].zone+'" >';
				if(dataArray[i].Partners != ''){
					displayData += dataArray[i].Partners;
					if(dataArray[i].Title != ''){
						displayData +=', ';
					}
				}
				displayData +='<i>'+dataArray[i].Title+'</i></a></div>	';	
			}
	
		}
	}
	UtilObject.WriteLayer(displayDiv,null,displayData);
}
	

pageData.parseDataDetail = function(dataArr){
	var displayData ='';
	var imageLoc = 'images/ZONE_'+this.zone+"/large_thumbs/";
	for(var i = 0;i<dataArr.length;i++){		
			
			if(dataArr[i].type == "Project"){
				dataArr[i].type = "Independent_Project";
			}
			
				displayData += 	'<div class="section_heading">'+dataArr[i].type.replace('_',' ')+'</div>';
				displayData += 	'<div class="section_leftPanel"><div class="artistImage">';
				displayData += 	'<table width="325" height="215" border="0"><tr align="center"><td valign="middle" align="center" >';
				displayData += 	'<img border="0" src="'+imageLoc+dataArr[i].FullImage+'.jpg"/></td></tr></table></div>';
				displayData += 	'<div class="artist_leftPanel_txt">'+dataArr[i].ImageCaption+'<br><br><img src="images/icons/'+dataArr[i].Handicap+'"/>';				
				displayData += 	'<div class="detail_backtoZonesBut"><a  href="zones.html" ></a></div></div></div>';		
				displayData += 	'<div class="section_rightPanel"><div class="imageBlock'+this.zone+dataArr[i].type+'"><table width="32" height="30">';
				displayData += 	'<tr align="center"><td valign="middle" >'+dataArr[i].id+'</td></tr></table></div>';
				displayData += 	'<div class="artistLocation">';
				
				if(dataArr[i].Location != ""){
					displayData +=	dataArr[i].Location;
				}
			/*	if(dataArr[i].Year != ""){
					if(dataArr[i].Location != ""){
						displayData +=  ', '; 
					} 
					displayData +=dataArr[i].Year;
				} */
				if(dataArr[i].Address != ""){
					displayData += 	'<br />'
					displayData +=   dataArr[i].Address;
				}
				
				if(dataArr[i].PhoneNumber != ""){
					displayData += 	'<br />'
					displayData +=   dataArr[i].PhoneNumber;
				}

				displayData +=  '</div><div class="clearFloat"></div>';
				
				displayData += 	'<div class="artistText"><strong>';
				
				if(dataArr[i].type == "Independent_Project"){
					displayData += 	'<strong><span style="font-size:14px;">'+dataArr[i].Partners+dataArr[i].Year+'</span></strong><br /><br>'
				
					displayData += 	'</strong><span style="font-size:14px;"><i>'+dataArr[i].Title+'</i></span><br />';
					if(dataArr[i].Artist != ""){
						displayData += dataArr[i].Artist;
						if(dataArr[i].ArtistLocation != ""){
							displayData += 	' - '+dataArr[i].ArtistLocation;
						}
						displayData += 	'<br /><span style="font-size:10px;">';
					}
					displayData += 	dataArr[i].Category+'</span><br /><br />';
				}else{
				
					displayData += 	'<span style="font-size:14px;"><i>'+dataArr[i].Title+'</i>'+dataArr[i].Year+'<br /></strong></span>';
					
					displayData += 	'<br />'+dataArr[i].Artist;
					if(dataArr[i].ArtistLocation != ""){
						displayData += 	' - '+dataArr[i].ArtistLocation;
					}
					displayData += 	'<br /><span style="font-size:10px;">'+dataArr[i].Category+'</span><br /><br />';
				
				}
				displayData += 	'<p>'+dataArr[i].FullInfo+'</p><br />';
				displayData += 	'<p>'+dataArr[i].ArtistBio+'</p><br />';
				//displayData += 	'<p>'+dataArr[i].AssociationIntro+' '+dataArr[i].Association+'</p>';
				if(dataArr[i].Association.indexOf(".jpg") > -1){
					dataArr[i].Association ='<br><br> <img src="images/assoc/'+dataArr[i].Association+'"/>';
				}
				
				
				displayData += 	'<div class="supportText"><p style="font-size:10px;">'+dataArr[i].AssociationIntro+' '+dataArr[i].Association+'</p>';
				if(dataArr[i].URL1 != ""){
					displayData += 	'<p><strong></strong> <a href="http://'+dataArr[i].URL1+'" target="_blank">'+dataArr[i].URL1+'</a></p>';
				}
				if(dataArr[i].URL2 != ""){
					displayData += 	'<p><strong></strong> <a href="http://'+dataArr[i].URL2+'" target="_blank">'+dataArr[i].URL2+'</a></p>';
				}
				displayData += 	'</div>';
				//if(dataArr[i].AssociationURL != ""){
					//displayData += 	'<div class="assocImage"><img src="images/assoc/'+dataArr[i].AssociationURL+'"/></div>';
				//}
				displayData += 	'</div></div></div>';
	
			
	}
	
	UtilObject.WriteLayer(this.dataDivId,null,displayData);
}

pageData.parseDataIndIndex = function(dataArr1){
	
	
	var displayData ='';
	
	/*if(this.type == "Exhibition"){
		var sortBy = "id";
	}else{
		var sortBy = "id";
	}
	
	
	dataArr1.sort(function (a, b) {
		if (a[sortBy] == b[sortBy]) {
		return 0;
		}
		if (a[sortBy] < b[sortBy]) {
		return -1;
		}
		return 1;
		});
	*/

	
	for(var i = 0;i<dataArr1.length;i++){	
		if(!(dataArr1[i].id=="I") && this.type == dataArr1[i].type){
			if(this.type == "Exhibition"){
				displayData += '<div class="result_abstract"><a href="detail.html?id='+dataArr1[i].id+'&zone='+dataArr1[i].zone+'" >'+dataArr1[i].id+'. ';
				
				if(dataArr1[i].Title != ''){
					displayData += '<i>'+dataArr1[i].Title+'</i>';
					if(dataArr1[i].Artist != ''){
						displayData +=', ';
					}
				}
				displayData +=dataArr1[i].Artist+'</a></div>';	
			}else{
				//switch to partner
				displayData += '<div class="result_abstract"><a href="detail.html?id='+dataArr1[i].id+'&zone='+dataArr1[i].zone+'" >'+dataArr1[i].id+'. ';
				
				if(dataArr1[i].Partners != ''){
					displayData += dataArr1[i].Partners;
					if(dataArr1[i].Title != ''){
						displayData +=', ';
					}
				}
				 displayData +='<i>'+dataArr1[i].Title+'</i></a></div>	';	
			}
			/*displayData += '<div class="result_abstract">'+newArray2[i].Title+'</div><div class="result_abstract">Zone:'+newArray2[i].zone+'</div><div class="result_link"><a href="detail.html?id='+newArray2[i].id+'&zone='+newArray2[i].zone+'" >more details</a></div><br /><br />';*/
		}
	}
	
	
	
	UtilObject.WriteLayer(this.dataDivId,null,displayData);
}


