var monthMap = {
	'01' : 'January',
	'02' : 'February',
	'03' : 'March',
	'04' : 'April',
	'05' : 'May',
	'06' : 'June',
	'07' : 'July',
	'08' : 'August',
	'09' : 'September',
	'10' : 'October',
	'11' : 'November',
	'12' : 'December'	
}

var xxxx = null;
var yyyy = null;
var isIe6 = $.browser.msie && $.browser.version=="6.0" &&!window.XMLHttpRequest;

var artistMap = null; // not initiated yet
var exhibitionMap = null; // not initiated yet
var collectionMap = {};

$.ajaxSetup ({
    // Disable caching of AJAX responses */
    cache: false
});

$(document).ready(function() {
	$.ajax({
		type: 'GET',
		url: 'get.php',
		dataType: 'json',
		contentType: 'application/json; charset=utf-8',
		success: function(data) {
			artistMap = data.artists_compact
			exhibitionMap = data.exhibitions_compact
		},
		data: {actionType:'GET_COMPACT_DATA'},
		async: false
	});
	
	
	// anti ie6 bug.
	if (isIe6) {
		//alert("Im the annoying IE6");
		$('#topBox .menu li').hover(
			function(){$(this).addClass('hover').css('border-color', '#ff7700');},
			function(){$(this).removeClass('hover').css('border-color', '');}
		);
		
		/*
		$('.leftBox .menu li, #artists_view .middleBox ul li')
		.live('mouseover', function(){
			$(this).css('border-color', '#ff7700');
		})
		.live('mouseout', function(){
			$(this).css('border-color', '');
		});
		*/
		
	};
	
	$('#topBox .menu li').click(function(){
		$('#topBox .menu li').removeClass('selected');
		$(this).addClass('selected');
		$(".view").hide();
		var label = $.trim($(this).text());
		switch (label){
			case 'Home': HomeView.show(); break;
			case 'Exhibitions': ExhibitionsView.show(); break;
			case 'Artists': ArtistsView.show(); break;
			case 'Contact': ContactView.show(); break;
			case 'Gallery': GalleryView.show(); break;
		}
	});	
	
	$('#topBox li:contains(Home)').click();	
			
});



function getFormattedDate(obj){
	var fromYear = obj.from_date.substr(0,4);
	var fromDay = parseInt(obj.from_date.substr(8,2));
	var toYear = obj.to_date.substr(0,4);
	var toDay = parseInt(obj.to_date.substr(8,2));
	var fromMonth = monthMap[obj.from_date.substr(5,2)];
	var toMonth = monthMap[obj.to_date.substr(5,2)];

	if (fromYear != toYear){
		return fromMonth + ' ' + fromDay + ', ' + fromYear + ' ' +  ' – ' + toMonth + ' ' + toDay + ', ' + toYear;
	}
	else {
		if (fromMonth == toMonth){
			return fromMonth + ' ' + fromDay + ' ' +  ' – ' + toDay + ', ' + toYear;
		}
		else {
			return fromMonth + ' ' + fromDay + ' ' +  ' – ' + toMonth + ' ' + toDay + ', ' + toYear;
		}
	}
}

function makeExhibitionEntry(obj){
	var artistNames = $.map(obj.artist_ids, function(id){
		return artistMap[id].first_name + ' ' + artistMap[id].last_name;
	});
	
	var dateString = getFormattedDate(obj)
	var li = $("<li/>").addClass('exhibitionBlock');
	if (artistNames.length > 0){
		$("<div/>").data('obj', obj).addClass('artistName').addClass('clickHere').text(artistNames.join(', ')).appendTo(li);
		$("<div/>").addClass('exhibitionTitle').text(obj.menu_text).appendTo(li);
	}
	else {
		$("<div/>").data('obj', obj).addClass('exhibitionTitle').addClass('clickHere').text(obj.menu_text).appendTo(li);
	}
	$("<div/>").addClass('exhibitionDate').text(dateString).appendTo(li);		
	return li		
}

function loadDetails(obj){ // assume artistObj for now.
	$.ajax({
		type: 'GET',
		url: 'get.php',
		dataType: 'json',
		contentType: 'application/json; charset=utf-8',
		success: function(data) {
			$.extend(obj, data.artist);
			// sort exhibition ids
			
			obj.exhibition_ids = $(obj.exhibition_ids).sort(function(a,b){return exhibitionMap[a].from_date > exhibitionMap[b].from_date ?-1 : 1});	

		},
		data: {actionType:'ARTIST', artistId:obj.id},
		async: false
	});
}

function loadExhibitionDetails(exhibitionObj){
	if (exhibitionObj.introduction_text === undefined){
		$.ajax({
			type: 'GET',
			url: 'get.php',
			dataType: 'json',
			contentType: 'application/json; charset=utf-8',
			success: function(data){
				$.extend(exhibitionObj, data.exhibition);
			},
			data: {actionType:'EXHIBITION', exhibitionId:exhibitionObj.id},
			async: false
		});
	}
	return exhibitionObj;
}

function loadCollection(collectionId){
	if (!collectionId) return null;
	if (!collectionMap[collectionId]){
		$.ajax({
			type: 'GET',
			url: 'get.php',
			dataType: 'json',
			contentType: 'application/json; charset=utf-8',
			success: function(data) {
				collectionMap[collectionId] = data.collection
			},
			data: {actionType:'COLLECTION', collectionId:collectionId},
			async: false
		});
	}
	return collectionMap[collectionId]
}


var ArtistsView = {
	isInitialized : false,
	init : function(){
		var self = this;
		self.view = $("#artists_view");
		self.view.show();

		var activeArtists = [];
		$.each(artistMap, function(id, obj){
			if (obj.active_flag == '1'){
				activeArtists.push(obj);
			}
		});

		activeArtists = $(activeArtists).sort(function(a,b){return a.last_name.toUpperCase() > b.last_name.toUpperCase() ?1 : -1})	

		var columns = $(".middleBox ul", self.view);
		//alert(listBox.length)
		var artistCnt = activeArtists.length;
		var columnMaxItemCnt = parseInt(artistCnt / columns.length);
		//var column1 = $(
		
		$.each(activeArtists, function(i, obj){
			var li = $("<li/>").data('obj', obj).text(obj.first_name + ' ' + obj.last_name); //.appendTo(listBox);
			
			var columnIndex = parseInt(i / columnMaxItemCnt);
			$(columns[columnIndex]).append(li);
			//alert(columnIndex);
			
			
		});
		$("li", self.view).click(function(){
			$(".view").hide();
			ArtistView.show($(this).data('obj'));
		});
		if (isIe6){
			$("li", self.view).hover(
				function(){$(this).addClass('hover').css('border-color', '#ff7700');},
				function(){$(this).removeClass('hover').css('border-color', '');}
			);
		};
		//listBox.jScrollPane();	
		
		
		self.isInitialized = true;
	},
	show : function(){
		var self = this;
		//$(".view").hide();
		if (!self.isInitialized) self.init();
		self.view.show();
	}
}
var ExhibitionsView = {
	isInitialized : false,
	init : function(){
		var self = this;
		self.view = $("#exhibitions_view");
		self.view.show();
		
		$(".leftBox .menu li", self.view).click(function(){
			$('.leftBox .menu li', self.view).removeClass('selected');
			$(this).addClass('selected');
			$(".subview", self.view).hide();
			var label = $.trim($(this).text());
			switch (label){
				case "Current": ExhibitionsCurrentSubview.show(); break;
				case "Upcoming": ExhibitionsUpcomingSubview.show(); break;
				case "Past": ExhibitionsPastSubview.show(); break;
			}
		});
		
		$(".leftBox .menu li:contains(Current)", self.view).click();
			
		self.isInitialized = true;
	},
	show : function(){
		var self = this;
		//$(".view").hide();
		if (!self.isInitialized) self.init();
		self.view.show();
	}
}
var HomeView = {
	isInitialized : false,
	init : function(){
		var self = this;
		self.view = $("#home_view");
		
		/*
		var obj = {from_date: '2009-10-01', to_date: '2009-10-25'};
		var dateString = getFormattedDate(obj);		
		var text = 'MARIJKE VAN WARMERDAM<br/>IN THE AIR<br/>'+dateString+'<br/>'
		$('<div class="middleTopText"></div>').html(text).appendTo($(".topBox", self.view));
		var imgPath = 'introduction-images/200922InTheAir_21cm.jpg'
		*/
		
		/*
		var obj = {from_date: '2009-10-29', to_date: '2009-11-22'};
		var dateString = getFormattedDate(obj);		
		var text = 'LATTE IN WATTE<br/>'+dateString+'<br/>'
		$('<div class="middleTopText"></div>').html(text).appendTo($(".topBox", self.view));
		var imgPath = 'introduction-images/GH-s-(Latte-in-Watte).jpg'
		*/
	
		/*
		var obj = {from_date: '2009-11-28', to_date: '2010-01-17'};
		var dateString = getFormattedDate(obj);		
		var text = 'HÅVARD HOMSTVEDT<br/>I SÅ FALL<br/>'+dateString+'<br/>'
		//var text = 'The gallery will be closed for the holidays<br/>December 23rd through January 1st 2010.'
		$('<div class="middleTopText"></div>').html(text).appendTo($(".topBox", self.view));
		var imgPath = 'introduction-images/HH-i-saa-fall-Introduction.jpg'	
		*/
		
		var text = '';
		$('<div class="middleTopText"></div>').html(text).appendTo($(".topBox", self.view));
		var imgPath = 'introduction-images/RH-og-DW-20100204.jpg';

		
		var isMultiExhib = true;
		if (!isMultiExhib){
			$('<img/>').addClass('homeImage').attr('src', imgPath).appendTo($(".middleBox", self.view)).click(function(){
				$('.view').hide();
				ExhibitionView.show(loadExhibitionDetails(exhibitionMap[23]));
			});
		}
		else {
			$('<img/>').addClass('homeImage').attr('src', imgPath).appendTo($(".middleBox", self.view)).click(function(){
				$('.view').hide();
				
				$('#topBox .menu li:contains(Exhibitions)').click();
				$(".leftBox .menu li:contains(Current)", ExhibitionsView.view).click();
				//ExhibitionsView.show();
			});
		}
		self.isInitialized = true;
	},
	show : function(){
		var self = this;
		//$(".view").hide();
		if (!self.isInitialized) self.init();
		self.view.show();
	}
}
var ContactView = {
	isInitialized : false,
	init : function(){
		var self = this;
		self.view = $("#contact_view");
		$(".middleBox", self.view).load("contact/contact.html");
		self.isInitialized = true;
	},
	show : function(){
		var self = this;
		//$(".view").hide();
		if (!self.isInitialized) self.init();
		self.view.show();	
	}
}
var GalleryView = {
	isInitialized : false,
	init : function(){
		var self = this;
		self.view = $("#gallery_view");
		$(".middleBox .contentPane", self.view).load("gallery/gallery.html", function(){
			$(".imageLoop img:first", self.view).show();
			$(".imageLoop", self.view).data('index', 0).click(function(){
				var length = $('img', this).length;
				var index = ($(this).data('index') + 1) % length;
				$(this).data('index', index);
				$('img', this).hide();
				$('img:eq('+index+')', this).show();
			});
		});
		
		
		
		self.isInitialized = true;
	},
	show : function(){
		var self = this;
		//$(".view").hide();
		if (!self.isInitialized) self.init();
		self.view.show();
	}
}

var ExhibitionView = {
	isInitialized : false,
	currentExhibitionObj : null,
	init : function(){
		var self = this;
		self.view = $("#exhibition_view");
		
		$(".leftBox .menu li", self.view).click(function(){
			$('.leftBox .menu li', self.view).removeClass('selected');
			$(this).addClass('selected');
			$(".subview", self.view).hide();
			var label = $.trim($(this).text());
			switch (label){
				case "Introduction": ExhibitionIntroductionSubview.show(self.currentExhibitionObj); break;
				case "Installation Views":
					var collectionId = self.currentExhibitionObj.installation_views_collection_id;
					ExhibitionInstallationViewsSubview.show(loadCollection(collectionId));
					break;
				case "Exhibited Works":
					var collectionId = self.currentExhibitionObj.exhibited_works_collection_id;
					ExhibitionExhibitedWorksSubview.show(loadCollection(collectionId));
					break;
				case "Biography": //?
					if (self.currentExhibitionObj.artist_ids.length == 1){
						artistObj = artistMap[self.currentExhibitionObj.artist_ids[0]];
						if (artistObj.exhibition_ids == undefined) loadDetails(artistObj);
						self.view.hide();
						ArtistView.show(artistObj, 'Biography');
					}
					else if (self.currentExhibitionObj.artist_ids.length > 1){
					}
				
					break;
				
			}			
		});
		
		self.isInitialized = true;
	},
	show : function(exhibitionObj){
		$('#topBox .menu li').removeClass('selected');
		$('#topBox .menu li:contains(Exhibitions)').addClass('selected');	
	
		var self = this;
		//$(".view").hide();
		if (!self.isInitialized) self.init();
		self.view.show();
		
		if (exhibitionObj != self.currentExhibitionObj){
			self.currentExhibitionObj = exhibitionObj
			
			var artistNames = $.map(exhibitionObj.artist_ids, function(id){
				return artistMap[id].first_name + ' ' + artistMap[id].last_name;
			});
			
			var dateString = getFormattedDate(exhibitionObj);
			
			$(".topBox", self.view).html('<div class="middleTopText">'+artistNames+'<br/>'+exhibitionObj.menu_text+'<br/>'+dateString+'</div>');		
		}
		
		$(".leftBox .menu li:contains(Introduction)", self.view).click()

		
	}
}
var ArtistView = {
	isInitialized : false,
	currentArtistObj: null,
	init : function(){
		var self = this;
		self.view = $("#artist_view");
		self.view.show();
		$(".leftBox .menu li", self.view).click(function(){
			$('.leftBox .menu li', self.view).removeClass('selected');
			$(this).addClass('selected');
			$(".subview", self.view).hide();
			var label = $.trim($(this).text());
			switch (label){
				case "Biography": ArtistBiographySubview.show(self.currentArtistObj); break;
				case "Images":
					var collectionId = self.currentArtistObj.images_collection_id;
					//collectionId = 2
					if (collectionId){
						ArtistImagesSubview.show(loadCollection(collectionId));
					}
					else ArtistImagesSubview.show(null);
					
					break;
				case "Galleri Riis Exhibitions": ArtistExhibitionsSubview.show(self.currentArtistObj); break;
			}
		});
		
		self.isInitialized = true;
	},
	show : function(artistObj, menuChoice){
		$('#topBox .menu li').removeClass('selected');
		$('#topBox .menu li:contains(Artists)').addClass('selected');
	
		var self = this;
		//$(".view").hide();
		if (!self.isInitialized) self.init();
		self.view.show();
		
		if (artistObj){
			if (artistObj != self.currentArtistObj){
				if (artistObj.exhibition_ids == undefined) loadDetails(artistObj);
				
				$(".topBox", self.view).html('<div class="middleTopText" style="letter-spacing: 2px;">' + artistObj.first_name + ' ' + artistObj.last_name + '</div>');	
			}
			
			self.currentArtistObj = artistObj;
			
			
		}
		
		if (!menuChoice) menuChoice = 'Images';
		$(".leftBox .menu li:contains("+menuChoice+")", self.view).click()
	}
}

function ExhibitionSubview(mainId, type){
	var self = this;
	self.mainId = mainId;
	self.isInitialized = false;
	self.type = type;
}
ExhibitionSubview.prototype = {
	init : function(){
		var self = this;
		self.view = $(self.mainId);
		
		var listBox = $(".middleBox ul", self.view);
		$.each(exhibitionMap, function(id, obj){
			if (obj.type == self.type && obj.active_flag == '1'){
				
				if (self.type == 'upcoming')
					listBox.prepend(makeExhibitionEntry(obj));
				else
					listBox.append(makeExhibitionEntry(obj));
			}
		});
		
		$("li .clickHere", listBox).click(function(){
			var exhibitionObj = $(this).data('obj');
			loadExhibitionDetails(exhibitionObj);
			$(".view").hide();
			ExhibitionView.show(exhibitionObj)
		});
		
		if (isIe6){
			$("li .clickHere", listBox).hover(
				function(){$(this).addClass('hover').css('border-color', '#ff7700');},
				function(){$(this).removeClass('hover').css('border-color', '');}
			);
		};
		
		
		self.isInitialized = true;
	},
	show : function(){
		var self = this;
		if (!self.isInitialized) self.init();
		self.view.show();		
		var listBox = $(".middleBox ul", self.view);
		listBox.jScrollPane();
	}
}

ExhibitionsCurrentSubview = new ExhibitionSubview("#exhibitions_current_subview", 'current');
ExhibitionsUpcomingSubview = new ExhibitionSubview("#exhibitions_upcoming_subview", 'upcoming');
ExhibitionsPastSubview = new ExhibitionSubview("#exhibitions_past_subview", 'past');


var ArtistBiographySubview = {
	isInitialized : false,
	currentArtistObj : null,
	init : function(){
		var self = this;
		self.view = $("#artist_biography_subview");
		
		//self.view.show();
		//var contentPane = $(".middleBox .contentPane", self.view);	
		//reinitialiseScrollPane = function(){contentPane.jScrollPane();}
		//contentPane.load("example_cv.html", '', reinitialiseScrollPane);
		
		$('<div id="pleaseContactForMoreInfo">Please contact the gallery for more information.</div>').appendTo($('.middleBox', self.view));
		
		
		self.isInitialized = true;
	},
	show : function(artistObj){
		var self = this;
		if (!self.isInitialized) self.init();
		
		if (self.currentArtistObj != artistObj){
			self.currentArtistObj = artistObj
			var contentPane = $(".middleBox .contentPane", self.view);
			contentPane.empty();
			if (artistObj.biography_text){
				self.view.show();
				self.buildBiography();
				contentPane.jScrollPane();
			}
			else {
				contentPane.text('Coming soon...');
			}
		
		}
		
		self.view.show();
	},
	buildBiography : function(){
		var self = this;
		var contentPane = $(".middleBox .contentPane", self.view);
		if ($.browser.msie) { // at least for ie6 and ie7
			var xml = new ActiveXObject("Microsoft.XMLDOM");
			xml.async = false;
			xml.loadXML(self.currentArtistObj.biography_text);
			xml = $(xml);
		}
		else {
			var xml = $(self.currentArtistObj.biography_text);
		}
		//alert(self.currentArtistObj.biography_text);
		xxxx = xml;
		yyyy = self.currentArtistObj.biography_text;
		//xxxx = $.text2xml(self.currentArtistObj.biography_text);
		
		
		var personInfo = xml.find('PersonInfo')[0];
		if (personInfo){
			//alert('has personInfo');
			personInfo = $(personInfo);
			var personInfoE = $('<div/>').addClass('cvPersonInfo')
			personInfo.find('Entry').each(function(i){
				var entry = $(this);
				if (entry.attr('id') == 'name'){ // do nothing
				}
				else {
					var entryE = $('<div/>').addClass('cvEntry').text(entry.text());
					personInfoE.append(entryE);
				}
			});
			contentPane.append(personInfoE);
		}
		xml.find('Section').each(function(i){
			var section = $(this);
			var sectionE = $('<div/>').addClass('cvSection')
			.append($('<div/>').addClass('cvSectionTitle').text(section.attr('name')));
			
			var yearBlocks = section.find('YearBlock');
			if (yearBlocks.length){
				yearBlocks.each(function(i){
					var yearBlock = $(this);
					var yearBlockE = $('<div/>').addClass('cvYearBlock')
					.append($('<div/>').addClass('cvYear').text(yearBlock.attr('year')));
					
					var entryBlockE = $('<div/>').addClass('cvEntryBlock');
					yearBlock.find('Entry').each(function(i){
						var entry = $(this);
						var entryE = $('<div/>').addClass('cvEntry').text(entry.text());
						entryBlockE.append(entryE);
					});
					yearBlockE.append(entryBlockE);
					
					
					sectionE.append(yearBlockE);
				});
			}
			else {
				section.find('Entry').each(function(i){
					var entry = $(this);
					var entryE = $('<div/>').addClass('cvEntry').text(entry.text());
					sectionE.append(entryE);
				});
			}
			contentPane.append(sectionE);
			
		});
	}
}


function ImageBrowser(mainId){
	var self = this;
	self.mainId = mainId;
	self.isInitialized = false;
	self.currentCollectionObj = null;
}
ImageBrowser.prototype = {
	gridSize : 20,
	init : function(){
		var self = this;
		self.view = $(self.mainId);
		

		var thumbGridMode = $('#templates #thumbGridMode').clone();		
		thumbGridMode.appendTo(self.view);
		
		var bigImageMode = $('#templates #bigImageMode').clone();		
		bigImageMode.appendTo(self.view);
	
		$('#templates #commingSoonMode').clone().appendTo(self.view);		

		
		
		self.thumbGridMode = thumbGridMode;
		self.bigImageMode = bigImageMode;

		//thumbGridMode.show()


		$('#navLeft', bigImageMode).click(function(){
			self.imageIndex = (self.imageCnt + self.imageIndex - 1) % self.imageCnt;
			self.enterBigImageMode(self.currentImageObjects[self.imageIndex], self.imageIndex);
		});
		$('#navRight', bigImageMode).click(function(){
			self.imageIndex = (self.imageIndex + 1) % self.imageCnt;
			self.enterBigImageMode(self.currentImageObjects[self.imageIndex], self.imageIndex);
		});
		
		
		$('#navLeft', thumbGridMode).click(function(){
			self.gridIndex = (self.gridCnt + self.gridIndex - 1) % self.gridCnt;
			self.populateThumbGrid();
		});
		$('#navRight', thumbGridMode).click(function(){
			self.gridIndex = (self.gridIndex + 1) % self.gridCnt;
			self.populateThumbGrid();
		});		
		
		

		self.isInitialized = true;
	},
	show : function(collectionObj){
		var self = this;
		if (!self.isInitialized) self.init();
				
		if (collectionObj){
			if (self.currentCollectionObj != collectionObj) {
				self.currentImageObjects = collectionObj.image_objects;
				self.currentCollectionObj = collectionObj;
				self.imageIndex = 0;
				self.imageCnt = self.currentImageObjects.length;
				self.gridIndex = -1; // calculated on enterThumbGridMode
				self.gridCnt = Math.ceil(self.imageCnt/self.gridSize);				
				//self.populateThumbGrid()
			}
			self.enterThumbGridMode();
		}
		else {
			self.enterCommingSoonMode();
		}
		
			
		self.view.show();
		
	},
	populateThumbGrid : function(){
		var self = this;
		var startIndex = self.gridIndex * self.gridSize;
		var endIndex = Math.min(startIndex + self.gridSize, self.imageCnt) -1;
		var thumbBox = $("#thumbBox", self.thumbGridMode);
		thumbBox.empty();
		for (var index=startIndex; index <= endIndex; index++){
			var imageObj = self.currentImageObjects[index];
			var imgPath = 'cache/thumbs_square/' + imageObj.original_file_name;
			var img = new Image();
			$(img)
			.css('visibility', 'hidden')
			.load(function(){
				//alert('loaded', this)
				$(this).css('visibility', 'visible');
			})
			.error(function(){
				alert('error');
			})
			.attr('src', imgPath);
			
			$('<div/>').addClass('imageHolder').data('obj', imageObj).data('imgNum', index).click(function(){
				var imageIndex = $(this).data('imgNum');
				var imageObj = $(this).data('obj');
				self.imageIndex = imageIndex
				self.enterBigImageMode(imageObj, imageIndex);
			})
			//.append($('<img/>').attr('src', imgPath))
			.append(img)
			.appendTo(thumbBox);		
		}
		if (self.gridCnt > 1){
			$("#imageNavigationBox", self.thumbGridMode).show();
			$("#navText", self.thumbGridMode).text((self.gridIndex+1)+ ' of ' + self.gridCnt);
		}
		else {
			$("#imageNavigationBox", self.thumbGridMode).hide();
		}
	},
	enterCommingSoonMode : function(){
		var self = this;
		$(".subviewMode", self.view).hide();
		$("#commingSoonMode", self.view).show();
	},
	enterThumbGridMode : function(){
		var self = this;
		
		var newGridIndex = Math.floor(self.imageIndex / self.gridSize);
		if (newGridIndex != self.gridIndex){
			self.gridIndex = newGridIndex;
			self.populateThumbGrid()
		}
		
		$(".subviewMode", self.view).hide();
		$("#thumbGridMode", self.view).show();
	},
	enterBigImageMode: function(imageObj, imageIndex){
		var self = this;
		$(".subviewMode", self.view).hide();
		//$("#bigImageMode", self.view).show();
		self.bigImageMode.show();
		
		
		var middleBox = $("#bigImageMode .middleBox", self.view);
		middleBox.empty();
		
		var imageUrl = 'uploads/images/' + imageObj.original_file_name;
		
		//$('<img/>')
		var img = new Image();
		$(img).load(function(){
			var bigImageProxy = $('<div/>').addClass("bigImageProxy").click(function(){
				//alert('show thumb box');
				self.enterThumbGridMode();
			}).appendTo(middleBox);	
			
			/*
			var w = this.width;
			var h = this.height;
			
			var maxWidth = 600;
			var maxHeight = 530;
			
			if (w/h <= maxWidth/maxHeight){
				$(this).css('height', maxHeight);
			}
			else {
				$(this).css('width', maxWidth);
			}
			*/
			
			$(bigImageProxy).append($(this));
	    })
		.attr('src', imageUrl);
		
		$("#navText", self.bigImageMode).text((self.imageIndex+1)+' of '+self.imageCnt);

		$("#pieceInfoBox", self.bigImageMode).html(imageObj.description.replace(/\n/g, '<br/>'));
	}	
}
ArtistImagesSubview = new ImageBrowser("#artist_images_subview");
ExhibitionInstallationViewsSubview = new ImageBrowser("#exhibition_installationViews_subview");
ExhibitionExhibitedWorksSubview = new ImageBrowser("#exhibition_exhibitedWorks_subview");



var ArtistExhibitionsSubview = {
	isInitialized : false,
	init : function(){
		var self = this;
		self.view = $("#artist_exhibitions_subview");	
		self.isInitialized = true;
	},
	show : function(artistObj){
		var self = this;
		if (!self.isInitialized) self.init();
		self.view.show();
		
		// only if artistId has changed...
		if (artistObj){
			
			
			//alert(artistObj.id);
			var listBox = $(".middleBox ul", self.view);
			listBox.empty();
			
			
			$.each(artistObj.exhibition_ids, function(i, exhibitionId){
				var exhibitionObj = exhibitionMap[exhibitionId];
				listBox.append(makeExhibitionEntry(exhibitionObj));
			
			});
			$("li .clickHere", listBox).click(function(){
				var exhibitionObj = $(this).data('obj');
				loadExhibitionDetails(exhibitionObj);
				$(".view").hide();
				ExhibitionView.show(exhibitionObj)
			});			
		}
	}
}




var ExhibitionIntroductionSubview = {
	isInitialized : false,
	currentExhibitionObj : null,
	init : function(){
		var self = this;
		self.view = $("#exhibition_introduction_subview");
		
		//self.view.show();
		//var contentPane = $(".middleBox .contentPane", self.view);

		//$('<img src="exhib-intro-illustration.jpg" width="400px">').appendTo(contentPane);
		
		
		
		//var scrollPane = $('<div/>').css('height', '200px').css('width', '500px').appendTo(contentPane);
		
		
		//scrollPane.jScrollPane();
		//reinitialiseScrollPane = function(){scrollPane.jScrollPane();}
		//scrollPane.load("exhib-introduction.html", '', reinitialiseScrollPane);		
		
		
		self.isInitialized = true;
	},
	show : function(exhibitionObj){
		var self = this;
		if (!self.isInitialized) self.init();
		
		if (self.currentExhibitionObj != exhibitionObj){
			self.currentExhibitionObj = exhibitionObj
			var contentPane = $(".middleBox .contentPane", self.view);
			contentPane.empty();
			if (exhibitionObj.introduction_text){
				self.view.show();
				self.buildIntroduction();
			}
			else {
			contentPane.text('Coming soon...');
			}
		}
		
		self.view.show();
	},
	buildIntroduction : function(){
		var self = this;
		var htmlText = self.currentExhibitionObj.introduction_text;
		//alert(htmlText);
		var contentPane = $(".middleBox .contentPane", self.view);
		var scrollPane = $('<div/>').css('height', '160px').addClass('hoho').css('width', '500px').html(htmlText).appendTo(contentPane);
		img = $('img', scrollPane)[0];
		if (img){
			var imgName = $(img).attr('src');
			imgName = imgName.split('/').pop(); // useful for ie6 and ie7
			
			$(img).remove();
			$(img).attr('src', 'introduction-images/' + imgName);			
			$(img).css('width', '500px');
			contentPane.prepend($('<br/><br/>'));
			contentPane.prepend(img);
		}
		scrollPane.jScrollPane();
	}
}
