var searchparameters = '';

var pagesize = 10;  // the page size
var previewOff = 20; // page size defaults
var previewOn = 10;  // page size defaults
var preview = true;  // brief of verbose view of the results
var globalwork = null;
var globalUserData = null;
var globalName = null;
var maxShot = 0;
var ErrorFrame = "#results";

var DataStore = new Array();

var plusses = /\+/g;

var page;
var maxnrpages;
page = setNewPage();


function timeStamp() {
	var d = new Date();

	return "&x_=" + escape(d.getTime())

}

function getSearchUrl() {

	searchparameters = typeToTypeUri(searchparameters);

	searchparameters = escapeQuotes(searchparameters, "keywords");
	searchparameters = escapeObligated(searchparameters, "person_name");

//	searchparameters = searchparameters + "&debug=yes";

dbg(liveurlSearch + "?service=" + searchservice + searchparameters.replace(plusses, "%20")+ "&paramlist=" + resultlist)

	RedirectLocation(searchparameters);
	
	return "fileadmin/proxy.php?url=" + escape(liveurlSearch + "?service=" + searchservice + 
					searchparameters.replace(plusses, "%20") + "&paramlist=" + resultlist);
}

function getWorkUrl(workid) {
	return "fileadmin/proxy.php?url=" + escape(liveurlWork + "?service=" + detailservice + "&workid=" + encodeURI(workid) + "&paramlist=" + workdetaillist);
}

function getRelatedSearchUrl() {
	return "fileadmin/proxy.php?url=" + escape(liveurlSearch + "?service=getsimilarworks" + searchparameters.replace(plusses, "%20") + "&paramlist=" + resultlist);

}

function getUserUrl(userid) {
	return "fileadmin/proxy.php?url=" + 
		escape(liveurlPerson + "?service=getartistdetails&artistid=" + encodeURI(userid) + "&paramlist=" + personresultlist);
}

var worksearch = "search";
var workdetails = "getworkdetails";

var personsearch = "searchartists";
var persondetails = "getartistdetails";

var worksorttag = "work_title";
var usersorttag = "name";

//idx_process,related_manifestation
var maniflist = "has_producer,has_publisher,manif_identifier,manif_place,manif_format,manif_display,manif_date,manifestation_of,idx_stream_avail,idx_asr_avail,manif_with_colour,manif_url,idx_qbe_avail,manif_with_sound,manif_title,manif_image,media_type,manif_description,manif_length,manif_highlighted,manif_language,manif_status,idx_main,manif_drmid,has_manifestation,related_manifestation";
//fulltext_works,has_lecturer
var worklist = "has_curator,organised_by,has_subwork,work_right,has_creator,part_of_collection,work_country,has_contributor,event_location,work_url,work_country_text,provided_by,work_language,work_term,work_description,related_person,presentation_date,work_image,work_type,work_genre,work_created,work_title,is_subwork_of,is_contributor,related_work,is_creator,provides_work,is_organiser,contains_work,is_curator,is_lecturer,idx_keyword,idx_epileptic_risk";
var personlist = "is_owner,has_member,biography,is_publisher,member_of,person_url,is_producer,person_country_text,person_country,person_image,life_span,person_name";
var collectionlist = "collection_title,collection_description,is_subcollection_of,has_subcollection";

var workdetaillist = maniflist +"," + worklist + "," + personlist + "," + collectionlist;

//var workdetaillist = "idx_epileptic_risk,work_type,provided_by,person_name,work_created,work_title,work_description,work_image,idx_main,idx_stream_avail,has_manifestation,has_creator";
var workresultlist = "idx_epileptic_risk,work_type,provided_by,person_name,work_created,work_title,work_description,work_image,idx_main,idx_stream_avail,has_manifestation,has_creator,has_curator,has_contributor,has_producer,has_publisher,is_contributor"; // has_lecturer
var personresultlist = "is_organiser,biography,is_owner,is_contributor,is_creator,has_member,is_curator,is_publisher,member_of,person_url,is_producer,person_country_text,person_country,is_lecturer,person_image,life_span,person_name"

var worktags= [
	{sorttag: 'work_title', tag:'work_title', type: 'text', target:'0', where:'work', title: 'Title', direction: 'up', directionsrc: downimage},
	{sorttag: 'name', tag:'person_name', type: 'artistslimited', target:'-1', where:'persons', title: 'Name', direction: '', directionsrc: ''},
//	{sorttag: 'name', tag:'person_name', type: 'artistslimited', target:'-1', where:'collectives', title: 'Name', direction: '', directionsrc: ''},
	{sorttag: 'work_type', tag:'work_type', type: 'type', target:'-1', where:'work', title: 'Type', direction: '', directionsrc: ''},
	{sorttag: 'year', tag:'work_created', type: 'date', target:'0', where:'work', title: 'Year', direction: '', directionsrc: ''},
	{sorttag: 'archive', tag:'provided_by', type: 'archive', target:'0', where:'work', title: 'Archive', direction: '', directionsrc: ''}
];

var usertags= [
	{sorttag: 'name', tag:'person_name', type: 'artistslimited', target:'-1', where:'persons', title: 'Name', direction: 'up', directionsrc: downimage},
	{sorttag: 'life_span', tag:'life_span', type: 'date', target:'0', where:'persons', title: 'Year', direction: '', directionsrc: ''},
	{sorttag: 'person_country_text', tag:'person_country_text', type: 'text', target:'-1', where:'persons', title: 'Country', direction: '', directionsrc: ''}
];

var relatedtags= [
	{sorttag: 'work_title', tag:'work_title', type: 'text', target:'0', where:'work', title: 'Title', direction: 'up', directionsrc: downimage},
	{sorttag: 'name', tag:'person_name', type: 'artistslimited', target:'-1', where:'persons', title: 'Name', direction: '', directionsrc: ''},
];


var searchservice;
var detailservice;
var Tags;
var default_sorttag;
var resultlist;
var typenr;
var showUsers;

switchToAll()

function switchToUser() {
	showUsers = true;
	searchservice = personsearch;
	detailservice = persondetails;
	Tags= usertags;
	default_sorttag = usersorttag;
	resultlist = personresultlist;
	resultType = 'Users';
}

function switchToAll() {
	showUsers = false;
	searchservice = worksearch;
	detailservice = workdetails;
	Tags= worktags;
	default_sorttag = worksorttag;
	resultlist = workresultlist;
	resultType = 'All';
}

function switchToUserDetail() {
	showUsers = false;
	searchservice = worksearch;
	detailservice = workdetails;
	Tags= worktags;
	default_sorttag = worksorttag;
	resultlist = workresultlist;
	resultType = 'UserDetail';
}

function switchToWorks() {
	showUsers = false;
	searchservice = worksearch;
	detailservice = workdetails;
	Tags= worktags;
	default_sorttag = worksorttag;
	resultlist = workresultlist;
	resultType = 'Works';
}

function switchToEvents() {
	showUsers = false;
	searchservice = worksearch;
	detailservice = workdetails;
	Tags= worktags;
	default_sorttag = worksorttag;
	resultlist = workresultlist;
	resultType = 'Events';
}

function switchToResources() {
	showUsers = false;
	searchservice = worksearch;
	detailservice = workdetails;
	Tags= worktags;
	default_sorttag = worksorttag;
	resultlist = workresultlist;
	resultType = 'Resources';
}

function getResultList(passedsorttag) {

	startLoader("Searching...");
	
		$.getJSON(
			getSearchUrl(), 
			function(json) {

				if(checkJson(json, ErrorFrame) != "" ) {
					showResultsMain(json["object-array"], passedsorttag)
					
					getFacets(json["object-array"][2], true);
				}
				
				endLoader();
			}
		)
}


function showResultsMain(json, passedsorttag) {

	$("#results").empty();
		
//		var sortAvailable = !(resultType == "Users"); // user data cannot be sorted (yet?)
		var sortAvailable = true; // user data cannot be sorted (yet?)
		var tablesrc = getTableSkeletonHtml(json[1], passedsorttag, sortAvailable);
		
		$(tablesrc).appendTo("#results");
		
		if(resultType == "Users") {
			var src = getTableContentUsersHtml(json[1], passedsorttag)
		} else {
			var src = getTableContentHtml(json[1], passedsorttag)
		}
		
		$(src).appendTo("#results tbody");

		
		var navsrc = getPrevNextHtml(json, "prevnext01");

		$(navsrc).prependTo("#results");

		var navsrc2 = getPrevNextHtml(json, "prevnext02");

		$(navsrc2).appendTo("#results");

		createPopups("#results");
		
		$('#prevnext01').ajaxForm( { beforeSubmit: submitGotoPage } ); 
		$('#prevnext02').ajaxForm( { beforeSubmit: submitGotoPage } ); 
				
}

function showResultsRelatedWorks(json, passedsorttag) {

	$("#results").empty();
		
		var tablesrc = getTableSkeletonHtml(json[1], passedsorttag, true);
		
		$(tablesrc).appendTo("#results");
		
		var src = getTableContentHtml(json[1], passedsorttag)
		
		$(src).appendTo("#results tbody");

		createPopups("#results");
}

function getPrevNextHtml(json, name) {

	maxnrpages = getTotalPages(json);
	page = getPageNumber(json);
	var totalcount = getTotalCount(json);

	var navsrc = '<form id="' + name + '" action="dummy" method="post">';
	navsrc += '<table class="pntable" cellpadding="0" cellspacing="0">';
	navsrc += '<tr>';
	if(page == 1) {
		navsrc += '<td>&nbsp;</td>';
	} else {
		navsrc += '<td><a href="javascript:gotoPage(1)"><img class="first" src="' + imgroot + 'trans.png"></a></td>';
	}
	
	if(page > 1) {
		navsrc += '<td><a href="javascript:gotoPage(' + (toInt(page) - 1) + ')"><img class="prev" src="' + imgroot + 'trans.png"></a></td>';
	} else {
		navsrc += '<td>&nbsp;</td>';
	}

	if(resultType == "Users") {
		navsrc += '<td  class="pagetext"> Page <input type="text" size="2" name="searchpage" value="' 
						+ page + '"> of ' + maxnrpages + '  (' + totalcount + ' persons found connected to ' + 
						getWorkCount(json) + ' works)</td>';
	} else {
		navsrc += '<td  class="pagetext"> Page <input type="text" size="2" name="searchpage" value="' 
						+ page + '"> of ' + maxnrpages + '  (' + totalcount + ' results found)</td>';
	}

	if(page < maxnrpages) {
		navsrc += '<td><a href="javascript:gotoPage(' + (toInt(page) + 1) + ')"><img  class="next" src="' + imgroot + 'trans.png"></a></td>';
	} else {
		navsrc += '<td>&nbsp;</td>';
	}
	

	if(page == maxnrpages) {
		navsrc += '<td>&nbsp;</td>';
	} else {
	navsrc += '<td><a href="javascript:gotoPage(' + maxnrpages + ')"><img class="last" src="' + imgroot + 'trans.png"></a></td>';
	}

	if(resultType == "Users") {
		navsrc += '<td class="toggleView">&nbsp;</td>';
	} else {
		navsrc += '<td class="toggleView"><a href="javascript:toggleView()">toggle view</a></td>';
	}

	navsrc += '</tr>';
	navsrc += '</table>';
	navsrc += '</form>';
	
	return navsrc;
}

function getTableSkeletonHtml(json, passedsorttag, clickTags) {

	if(passedsorttag == '') {sorttag = getSortTag(); } else {sorttag = passedsorttag};

	var tablesrc = '<table cellspacing="0" cellpadding="0" width="100%">';
	tablesrc += '<thead>';
	tablesrc += '<tr>';
	
dbg(sorttag + ":" + clickTags)

	var old_tag = "";
	var tag = null;
	var colspanstr = "";
	for (var i=0; (i < Tags.length); i++) {
		tag = Tags[i]

		var last = "";
		if(i == (Tags.length - 1)) {
			last = ' class="last"';
		}

		colspanstr = "";
		if(tag['tag'] =='work_title' || i == (Tags.length-1)){
			colspanstr = ' colspan="2" '
		}
		
		if(tag['tag'] != old_tag) {
		
			if(tag['sorttag'] == sorttag && clickTags) {
	
				tablesrc += '<th id="' + tag['tag'] + '" class="sortedTag" ' + colspanstr + 
						' onClick="sortColumn(\'' + tag['sorttag'] + '\', \'' + tag['direction'] + '\')">'
						 + tag['title'] + ' ' + tag['directionsrc'] + '</td>';

			} else{
			
				tablesrc += '<th id="' + tag['tag'] + '" ' + colspanstr;
				
				if(clickTags) tablesrc +=' onClick="sortColumn(\'' + tag['sorttag'] + '\', \'down\')"'
				
				tablesrc += last + '>' + tag['title'] + '</td>';
	
			}
			
			old_tag = tag['tag'];
		}		
	}
	
	tablesrc += '</tr>';
	tablesrc += '</thead>';
	tablesrc += '<tbody>';
	tablesrc += '</tbody>';
	tablesrc += '</table>';
	
	return tablesrc;
}

function getTableContentHtml(json, passedsorttag) {
	var src = "";
	
	if(preview) {
		src = getTableContentHtmlPreview(json, passedsorttag)
	} else {
		src = getTableContentHtmlNoPreview(json, passedsorttag)
	}
	
	return src;
}

function getTableContentUsersHtml(json, passedsorttag) {
	var src = "";
	
	src = getTableContentUsersHtmlNoPreview(json, passedsorttag)
	
	return src;
}

function getTableContentUsersHtmlNoPreview(json, passedsorttag) {

	var src = "";
	globalUserData = json;

	for (var i=0; (i < json.length); i++) {
		var rr = json[i];
		
		var userid = getUserId(rr); 
		
		var odd = ''
		if(i%2 == 0) {
			 odd = '';			
		} else {
			 odd = 'class="odd"';
		}

		src += '<tr ' + odd + ' id="r' + i + '">';
		
		var buffer = new Array(); 
		var oldtag = null;
		var tag = null;
		
		for (var j=0; (j < Tags.length); j++) {
			tag = Tags[j];

			if(oldtag != null && oldtag['tag'] != tag['tag']) {
				src = src + '<td  class="bordertd">' + sanitize(oldtag['type'], buffer, oldtag['target']) + '&nbsp;</td>'; // 
				buffer = new Array();
			}

			buffer = buffer.concat(getValueFromPerson(rr, tag['where'], tag['tag'], -1));

			oldtag = tag;
		};
		
		src += '<td class="bordertd">' + sanitize(tag['type'], buffer, tag['target']) + '</td>';

		var username = getValueFromPerson(rr, "persons", "person_name", 0);
		
		src += '<td class="bordertd"><a href="javascript:viewUser(\'' + userid + '\', ' + i + ',\'' + username + '\')" class="arrow moreinfo">More&nbsp;info</a></td>'
		
		src += '</tr>';

	};
	return src;
}

function getTableContentHtmlNoPreview(json, passedsorttag) {

	var src = "";

	for (var i=0; (i < json.length); i++) {
		var rr = json[i];

		var workid = getWorkId(rr);

		var epilipticRisk = (sanitize("number", getValueFrom(rr, "manifestations", "idx_epileptic_risk"), 0, 0) == 1);
		
		if(epilipticRisk) {
			normalborder = '';
			normalimageborder = ' class="image"';
		} else {
			normalborder = ' class="bordertd"';
			normalimageborder = ' class="bordertd image"';
		}

		var odd = ''
		if(i%2 == 0) {
			 odd = '';			
		} else {
			 odd = 'class="odd"';
		}

		var thumbnail = sanitizeThumbnail(rr, workid, "work_image", "work_image", getPreviewUrl(rr), i, 
									'' + sanitize("text", getValueFrom(rr, "work", "work_title"), 0));
		hasThumb = (thumbnail != "");

		src += '<tr  ' + odd + ' id="r' + i + '">';
		
		if( hasThumb ) {
			src += '<td ' + normalimageborder + '>' 
					+ thumbnail + '</td>';
			src += '<td ' + normalborder +'><b>' + sanitize("text", getValueFrom(rr, "work", "work_title"), 0) + '</b></td>';
		} else {
			src += '<td ' + normalborder + ' colspan="2"><b>' + sanitize("text", getValueFrom(rr, "work", "work_title"), 0) + '</b></td>';
		}

		var nrcells = 2; // always two cells done

		var buffer = new Array(); 
		var oldtag = null;
		var tag = null;
		
		for (var j=0; (j < Tags.length); j++) {
			tag = Tags[j];

			// skip title, there always is a title
			if(tag['tag'] =='work_title') {
				// do nothing
			} else {
			
				if(oldtag != null && oldtag['tag'] != tag['tag']) {
					src = src + '<td ' + normalborder + '>' + sanitize(oldtag['type'], buffer, oldtag['target']) + '</td>'; // 
					buffer = new Array();
				}
				buffer = buffer.concat(getValueFrom(rr, tag['where'], tag['tag'], -1));
				oldtag = tag;
				nrcells++;
			}
		};
		
		src += '<td ' + normalborder + '>' + sanitize(tag['type'], buffer, tag['target']) + '</td>';
		manifid = getManifestionId(rr);

		src += '<td ' + normalborder + ' valign="bottom"><a href="javascript:clickResult(\'r' + i + '\', \'' + workid + '\')" class="arrow moreinfo">More&nbsp;info</a></td>'
		nrcells++;
		
		src += '</tr>';

		if (epilipticRisk){
			src += '<tr ' + odd + ' id="r' + i + '"><td colspan="' + nrcells + '" class="bordertd">' + seizure_text + '</td></tr>';
		}

//		$(src).appendTo("#results tbody");
	};
	return src;
}

function getTableContentHtmlPreview(json, passedsorttag) {

	var src = "";

	for (var i=0; (i < json.length); i++) {
	
		var rr = json[i];

		workid = getWorkId(rr);
		
		var odd = ''
		if(i%2 == 0) {
			 odd = '';			
		} else {
			 odd = 'class="odd"';
		}

		var epilipticRisk = (sanitize("number", getValueFrom(rr, "manifestations", "idx_epileptic_risk", 0), 0, 0) == 1);
		
		var thumbnail = sanitizeThumbnail(rr, workid, "work_image", "work_image", getPreviewUrl(rr), i, 
									'' + sanitize("text", getValueFrom(rr, "work", "work_title"), 0));
		hasThumb = (thumbnail != "");
		
		var description = sanitize("textlimited", getValueFrom(rr, "work", "work_description"), 0, 220);
		hasDescription = (description != "");
		if(hasDescription || epilipticRisk) {
		
			thumbrowspan = ' rowspan="2" ';
			tdborder = '';
			
		} else {

			thumbrowspan = '';
			tdborder = ' class="bordertd" ';			
		}

		src += '<tr  ' + odd + ' id="r' + i + '">';

		if(hasThumb) {
			src += '<td ' + thumbrowspan + ' class="bordertd image">' 
					+ thumbnail + '</td>';
			src += '<td ' + tdborder + '><b>' + sanitize("text", getValueFrom(rr, "work", "work_title"), 0) + '</b></td>';
			
		} else {

			src += '<td colspan="2"' + tdborder + '><b>' + sanitize("text", getValueFrom(rr, "work", "work_title"), 0) + '</b></td>';
			
		}

		var buffer = new Array(); 
		var oldtag = null;
		var tag = null;
		var nrcells = 1;
		
		for (var j=0; (j < Tags.length); j++) {
			tag = Tags[j];

			// skip title, there always is a title
			if(tag['tag'] =='work_title') {
				// do nothing
			} else {
			
				if(oldtag != null && oldtag['tag'] != tag['tag']) {
					src = src + '<td' + tdborder + '>' + sanitize(oldtag['type'], buffer, oldtag['target']) + '</td>'; // 
					buffer = new Array();
					nrcells++
				}
				buffer = buffer.concat(getValueFrom(rr, tag['where'], tag['tag'], -1));
				oldtag = tag;
				
			}
		};

		if(hasDescription || epilipticRisk) {
			src += '<td' + tdborder + ' colspan="2">' + sanitize(tag['type'], buffer, tag['target']) + '</td>';
		} else {
			src += '<td' + tdborder + '>' + sanitize(tag['type'], buffer, tag['target']) + '</td>';
			manifid = getManifestionId(rr);
			src += '<td class="bordertd" valign="bottom"><a href="javascript:clickResult(\'r' + i + '\', \'' + workid + '\')" class="arrow moreinfo">More&nbsp;info</a></td>'

		}
		nrcells++;
		
		src += '</tr>';
		
		if(!hasThumb) nrcells++
		if(hasDescription || epilipticRisk) {

			src += '<tr  ' + odd + ' id="r' + i + 'b">';
			
			// if there is no thumb, this row has to be one bigger to compensate

			var risk = "";
			if (epilipticRisk){
			
				risk = seizure_text + '<br />';
			}

			src += '<td colspan="' + (nrcells) + '" class="bordertd">' + risk + description + '</td>';

			manifid = getManifestionId(rr);
			src += '<td class="bordertd" valign="bottom"><a href="javascript:clickResult(\'r' + i + '\', \'' + workid + '\')" class="arrow moreinfo">More&nbsp;info</a>';
			
			src += '</tr>';
		}


	};

	return src;
}

function getTableContentHtmlRelated(json, passedsorttag) {

	var src = "";

	for (var i=0; (i < json.length); i++) {
		var rr = json[i];

		var workid = getWorkId(rr);

		var odd = ''
		if(i%2 == 0) {
			 odd = '';			
		} else {
			 odd = 'class="odd"';
		}

		var epilipticRisk = (sanitize("number", getValueFrom(rr, "manifestations", "idx_epileptic_risk"), 0, 0) == 1);
		var nrcells = 0;
		
		if(epilipticRisk) {
			normalborder = ' class="text"';
			normalimageborder = ' class="image"';
		} else {
			normalborder = ' class="bordertd text"';
			normalimageborder = ' class="bordertd image"';
		}
		
		
		var thumbnail = sanitizeThumbnail(rr, workid, "work_image", "work_image", getPreviewUrl(rr), i, 
									'' + sanitize("text", getValueFrom(rr, "work", "work_title"), 0));
		hasThumb = (thumbnail != "");

		src += '<tr  ' + odd + ' id="r' + i + '">';
		
		if( hasThumb ) {
			src += '<td ' + normalimageborder + '>' 
					+ thumbnail + '</td>';
			src += '<td ' + normalborder + '><b>' + sanitize("text", getValueFrom(rr, "work", "work_title"), 0) + '</b><br />';
		} else {
			src += '<td ' + normalborder + ' colspan="2"><b>' + sanitize("text", getValueFrom(rr, "work", "work_title"), 0) + '</b><br />';
		}
		nrcells+=2;

		var buffer = new Array(); 
		var oldtag = null;
		var tag = null;
		
		for (var j=0; (j < Tags.length); j++) {
			tag = Tags[j];

			// skip title, there always is a title
			if(tag['tag'] =='work_title') {
				// do nothing
			} else {
			
				if(oldtag != null && oldtag['tag'] != tag['tag']) {
					src += sanitize(oldtag['type'], buffer, oldtag['target']); // 
					buffer = new Array();
				}
				buffer = buffer.concat(getValueFrom(rr, tag['where'], tag['tag'], -1));
				oldtag = tag;
				
			}
		};
		
		src += sanitize(tag['type'], buffer, tag['target']) + '</td>';
		manifid = getManifestionId(rr);

		src += '<td ' + normalborder + '><a href="javascript:clickResult(\'r' + i + '\', \'' + workid + '\')" class="arrow moreinfo">More&nbsp;info</a></td>'
		nrcells++;
		
		src += '</tr>';
		
		if (epilipticRisk){
			src += '<tr ' + odd + ' id="r' + i + '"><td colspan="' + nrcells + '" class="bordertd">' + seizure_text + '</td></tr>';
		}	

	};
	return src;
}

var facetList = {
	"archives":{"value":"", "title":"Archives", "showurl" : true, "tag":["archive"], "field":null, "query":"", "max":18}, 
	"video":{"value":"", "title":"Has video", "showurl" : true, "tag":["previewonly", "fullworkonly", "previewonly"], "field": ["yes", "yes", "no"], "query":"", "max":18}, 
	"keywords":{"value":"", "title":"Keywords", "showurl" : true, "tag":["keywords"], "field":[], "query":"", "max":18}, 
	"type":{"value":"", "title":"Types", "showurl" : true, "tag":["work_type"], "field":[], "query":"", "max":18}, 
	"artist title":{"value":"", "title":"Title or Name", "showurl" : true, "tag":["title", "artist"], "field":["artist_title"], "query":"", "max":18}, 
	"free text":{"value":"", "title":"Free text", "showurl" : true, "tag":["title", "artist", "description", "ocr_keyword"], "field":["freetext"], "query":"", "max":18},	
	"created":{"value":"", "title":"Created", "showurl" : true, "tag" : ["created"], "field":[], "query":"", "max":18}	
};

var facetChildren = [
	["title","Title"],	
	["name","Name"],	
	["description","Description"],	
	["ocr_keyword","OCR Keywords"],	
	["yes","Yes"],
	["no","No"],
	["available","Video available"],
	["full work","Full-length video"],
	["no video","No video"]
];


function getFacets(facets, showUrls) {

			var src="";

			if(resultType == "Users") {
				src += "<p>Work related filtering:</p>"
			}
			
			for (var i=0; i < facets.length; i++) {
				var facet = facets[i]
				
				if( facet.children.length > 0 && facetList[facet.tag] != undefined) {

				  	var facettitle = facetList[facet.tag]["title"];
					var facetvalue = facetList[facet.tag]["value"];
					var facetshowurl = (facetList[facet.tag]["showurl"] && showUrls); // only when both are true
	
					src += '<p>' + facettitle + ':</p>';
					src += '<ul>';
					
					if( facetvalue != "" ) {
					
						src += showSelectedFacet(facet, facetvalue);
						
					} else {
						if(facettitle == "Created" && facet.children.length > 8) {
							src += showFacetDate(facet, facetshowurl);
						} else {
							src += showFacet(facet, facetshowurl);
						}
					}
					
					src += '</ul>';
				}
			};
			$("#facets").empty().append(src);
}

function showFacetDate(facet, showurl) {

	related = false;
	
	var src = "";

	var startyear = toInt(facet.children[0].tag);
	startyear = startyear - (startyear % 5);
  
	var endyear = toInt(facet.children[facet.children.length - 1].tag);
	endyear = endyear + (endyear % 5) + 1;

	var index = 0;
	var count = 0;
	var title = "";
	var totalcount = 0;
	
	for (var j=startyear; j < endyear; j++) {

		var child = facet.children[index];
		if(child && child.tag == j) {
			count += child.count;
			index++;
		}

		if(j%5 ==4) { 
			
			if(count > 0) {
				if(showurl) {
				
					functionstr = '<a href="javascript:clickFacetDate(\'from\',\''+ title + '\','
																	+ '\'to\',\''+ j + '\')">';
					functionend = "</a>";
				} else {
					functionstr = '';
					functionend = "";
				
				}
				title = title + ' - ' + j;
				
				if(related) {
					src += '<li>'	
								+ title
								+ ' (' + count + ')</li>';
				} else {
					src += '<li>' + functionstr
								+ title
								+ ' (' + count + ')' + functionend + '</li>';
				}
				totalcount += count
				count = 0;
			}
			
		} else {
			if(j%5 ==0) {
				title =  j;
			} 
		}
		
	};

	return src
}

function showSelectedFacet(facet, selected) {

	if(facet.tag == "archives") {
		childTag = getFacetArchive(selected);
	}

	slashPos = selected.lastIndexOf("/")
	if(slashPos > 0 ) {
		selected = selected.substr((slashPos +1));
	}

	for(var k=0; k < facetChildren.length; k++) {
		if(selected == facetChildren[k][0]) selected = facetChildren[k][1];
	}


	if(facet.tag == "archives") {
		selected = getFacetArchive(selected);
	} else {
		selected = addSpace(selected);
	}
		
	var src = '<li><a href="javascript:resetFacet(\'' + facet.tag + '\')">&lt; Back</a></li>';
	src = src + '<li>' + selected + '</li>';
	
	return src;
}

function getFacetReference(facet, i, childTag, displayChildTag) {

	var label = "";

	var labellist = facetList[facet["tag"]]["tag"];

	if(facet["tag"] == null) {
		 label =  ""
	
	} else if(i < labellist.length) {
		 label =  labellist[i];
	
	} else {
		 label =  labellist[0];
	}
	
	var field = facetList[facet["tag"]]["field"];

	if(label == "keywords") {
		 fieldvalue =  displayChildTag.replace(" ", "+");
	} else if (field == "" || field == null ) {
		fieldvalue = childTag
	} else if(field.length > 1 && i < field.length) {
		 fieldvalue =  field[i];
	} else{
		 fieldvalue = $("form#searchform" + resultType + " input#" + field[0]).val()
	}
	
	return "'" + label + "','" + fieldvalue + "'"
}

function showFacet(facet, showurl) {

	var src = "";
	
	maxFacetLength = facet.children.length;

	if(facetList[facet.tag]["max"] < facet.children.length && !$("form#searchformSettings input#noresultlimit").attr("checked")) 	{
	
		maxFacetLength = facetList[facet.tag]["max"]
	
	}

	for (var j=0; j < maxFacetLength; j++) {
		var child = facet.children[j];

		var facetTag = facet["tag"]?facet["tag"]:facet["title"];
		var childTag = (child["tag"]?child["tag"]:child["title"]);

		var origChildTag = childTag;

		slashPos = childTag.lastIndexOf("/")
		if(slashPos > 0 ) {
			childTag = childTag.substr((slashPos +1));
		}

		for(var k=0; k < facetChildren.length; k++) {
			if(childTag == facetChildren[k][0]) childTag = facetChildren[k][1];
		}
		
		if(facetTag == "archives") {
			childTitle = getFacetArchive(child.tag);
		} else {
			childTitle = addSpace(childTag);
		}

		if(showurl) {

			if(facet["tag"] == "created") {
				src += '<li><a href="javascript:clickFacetDate(\'from\',\'' + childTag + '\', ' + 
																'\'to\',\'' + childTag + '\')">';

			} else {
				facetLabel = getFacetReference(facet, j, origChildTag, childTitle);

				src += '<li><a href="javascript:clickFacet(\'' + facetTag + '\',\'' + origChildTag + '\',' 
														+ facetLabel + ')">';
			}
			src += childTitle +
					  ' (' + child.count + ')</a></li>';

		} else {

			src += '<li>'	
						+ childTitle
						+ ' (' + child.count + ')</li>';
		}

	};
	return src
}


function getWorkData(workid) {

startLoader("Loading...");

	$.getJSON(
		getWorkUrl(workid), 
//								"params", 
		function(json) {

			theWork = json["object-array"][0][0];
			maxShot = sanitize("text", getValueFrom(theWork, "work", "shotcount"), 0);
			
			manifid = getManifestionId(theWork)

			hasvideo = (manifid != -1)

			globalwork = theWork;

			getWorkInfo(theWork);
			getWorkArtists(theWork);
			getWorkFilmstrip(theWork, maxShot);
			getWorkMetadata(theWork);
			getWorkRelated(theWork);

			var textwidth = 40;
			if(hasvideo) {
				getWorkMovie(theWork)
				textwidth = 85;
			}
						
			var title = sanitize("textlimited", getValueFrom(theWork, "work", "work_title"), 0, textwidth)

			$("#extras_title").html(title);
			$("#info_header a").html("Description");
			$("#artist_header a").html("Person(s)");
			$("#strip_header a").html("Film strip");
			$("#metadata_header a").html("Media");
			$("#related_header a").html("Related");
			
			openAccordeon(0);
			accordeonFilled = true;

			resizeResultPopup(hasvideo)

			endLoader();
		}

	)
}

function getWorkInfo(json) {

	var src = "";
	src += '<div id="work_info_thumb">';
	
	src += '<p>' + sanitizeShot(json, 0, sanitize("text", getValueFrom(json, "work", "work_title"), 0)) + '</p>';

// sanitizeThumbnail(json, workid, "work_image", "work_image", "", 0, 
//									sanitize("text", getValueFrom(json, "work", "work_title"), 0))

// sanitizePopup(json, "work", "work_image", getPreviewUrl(json), 0, 
//										 sanitize("text", getValueFrom(json, "work", "work_title"), 0), 
//										 thumbwidthpreview, thumbheightpreview)

	src += "</div>"
	
	src += '<div id="work_info_data">';
	src += '<h3>' + sanitize("text", getValueFrom(json, "work", "work_title"), 0) + '</h3>';

	var results = new Array()
	results  = getValueFrom(json, "persons", "person_name", 0);
//	.concat(getValueFrom(json, "collectives", "person_name", 0))

	src += sanitizeUL(results, false);
	
	var country = sanitize("text", getValueFrom(json, "work", "work_country_text"), -1);
	var date = sanitize("date", getValueFrom(json, "work", "work_created"), 0);
	var language = sanitize("text", getValueFrom(json, "work", "work_language"), 0);
	 
	src += '<p>' + country;
	if( country != "" && date != "") {
		src+= ", ";
	} 
	src +=  date;
	if(language != "") {
		src +=  ' (' + language + ')';
	}
	src += '</p>';

	var work_archive = sanitize("archive", getValueFrom(json, "work", "provided_by"), -1);
	if (work_archive != "") src += '<p>Archive: ' + work_archive + '</p>';
	
	var work_type = sanitize("type", getValueFrom(json, "work", "work_type"), -1);
	if (work_type != "") src += '<p>Type(s): ' + work_type + '</p>';

	var work_term = addSpace(sanitize("text", getValueFrom(json, "work", "work_term"), -1));
	if (work_term != "") src += '<p>Keyword(s): ' + work_term + '</p>';

	var collections = sanitize("text", getValueFrom(json, "works", "collection_title", -1), -1);
	if (collections != "") src += '<p>Collection(s): ' + collections + '</p>';

	var work_rights = sanitize("text", getValueFrom(json, "work", "work_rights"), -1);
	if (work_rights != "") src += '<p>Rights: ' + work_rights + '</p>';

	src += "</div>"
	
	var description = sanitize("text", getValueFrom(json, "work", "work_description"), 0);
	src += '<div id="work_info_descr">';
	if (description != "") 
	{
		src += '<p>' + description + '</p>';
	}
	src += "</div>"
	
	$("#info_content").empty().append(src);
	createPopups("#info_content");
}

function getWorkArtists(json) {
	var src = "";
	src += '<div id="work_artists_data">';

	var artists = json.persons;
//	var collective = json.collectives;
	
	if(artists.length > 0) {	
		
		for (var i=0; (i < artists.length); i++) {
			
			if (i>0) src+="<hr />";
			
			var personurl = sanitize("text", getValueFrom(json, "persons", "person_url", i), 0);

			var personname = sanitize("text", getValueFrom(json, "persons", "person_name", i), 0);
			if(personurl != "") {
			
				personname = '<a href="' + personurl + '" target="_blank">' + personname + '</a>';
			
			}
			
			src += "<p>" + personname + "</p>";
			
			
			var lifespan =  sanitize("date", getValueFrom(json, "persons", "life_span", i), 0);
			var personcountry = sanitize("text", getValueFrom(json, "persons", "person_country_text", i), 0);
			
			if(lifespan != "" && personcountry != "") {
				src += "<p>" + lifespan + ", " + personcountry + "</p>";			
			} else if(lifespan != "" ){
				src += "<p>" + lifespan + "</p>";			
			} else if(personcountry != "") {
				src += "<p>" + personcountry + "</p>";			
			}
			
			
			src += "<p>" + sanitize("text", getValueFrom(json, "persons", "biography", i), 0) + "</p>"; 
		}
	} else {
		src += "This work has no information about persons in the database."	
	}
	
	src += "</div>"
	
	$("#artist_content").empty().append(src);
	createPopups("#artist_content");

} 

function getWorkFilmstrip(json) {

	var workid = getManifestionId(json);

	var src = "";
	
	if(workid == -1) {
		src = "This work doesn't have a film strip available.";
	} else {

		src = 'This film strip is generated automatically. Click on the image to search for visually similar works.';
		src +='<table width="100%">';
		
		for (var i=1; i <= (maxShot); i++) {

			if(i%3 == 1) {
				src +="<tr>";
			}
			
			shotnr = (i - 1);
			src += '<td><a href="" onclick="javaScript:relateShots(\'' + workid + '\', \'' + shotnr + 
							'\');return false;">' + sanitizeShot(json, shotnr, " Shot " + i) + '</a></p>';
			src += '<p>Shot ' + i + '</p></td>';
		
		
			if(i%3 == 0) {
				src +="</tr>";
			}
	
		}

		// if we didn't close up because there was an uneven nr of shots
		if(i%2 == 0) {
			src +="<td></td></tr>";
		}
 
		src +="</table>";
	
	}

	$("#strip_content").empty().append(src);
	
	createPopups("#strip_content")
}


var showrelatedworks = new Array();
var runadvancedsearch = new Array();
var relatedSearchType = "";
var relatedSearchBy = "";

function getWorkRelated(json) {
	var src = "";
	var sep ="";
	src += '<div id="work_related_data">';


	var worktitle = sanitize("text", getValueFrom(json, "work", "work_title", i), 0);
	

	src += "External information: <br />"
	sep = "";
	var worksrc = ""

	var workurl = getValueFrom(json, "work", "work_url", i);

	for (var j=0; (j < workurl.length); j++) {
		worksrc += sep + '<a href="' + workurl[j] + '" target="_blank">link</a>';
		sep = ", ";
	}

	var workimage = getValueFrom(json, "work", "work_image", i);

	for (var k=0; (k < workimage.length); k++) {
		worksrc += sep + '<a href="' + workimage[k] + '" target="_blank">img</a>';
		sep = ", ";
	}
			
	if (worksrc != "") src += '<label>- Work: </label>' + worksrc + '.<br />';

	var artists = json.persons;

	if(artists.length > 0) {	
		for (var i=0; (i < artists.length); i++) {

			var personname = sanitize("text", getValueFrom(json, "persons", "person_name", i), 0);
			

			sep = "";
			var personsrc = ""

			var personurl = getValueFrom(json, "persons", "person_url", i);

			for (var j=0; (j < personurl.length); j++) {
				personsrc += sep + '<a href="' + personurl[j] + '" target="_blank">link</a>';
				sep = ", ";
			}
		
			var personimage = getValueFrom(json, "persons", "person_image", i);

			for (var k=0; (k < personimage.length); k++) {
				personsrc += sep + '<a href="' + personimage[k] + '" target="_blank">img</a>';
				sep = ", ";
			}
			
			if (personsrc != "") src += '<label>- ' + personname + ': </label>' + personsrc + '.<br />';
		}

		src += "<br />"
	}

	
	src +='<form action="../">';
	src +='<table>';	

	src += "<tr><td>Search within GAMA for</td>"
	src += '<td><select onchange="setrelatedsearchtype(this.options[this.selectedIndex].value)">';
	src += '<option value="" selected="selected">All related works</option>';
	src += '<option value="Artwork">Only related artworks</option>';
	src += '<option value="Event">Only related events</option>';
	src += '<option value="Resource">Only related resources</option>';
	src += '</select></td></tr><tr><td colspan="2">&nbsp;&nbsp;which are:</td></tr>';


// Related persons
	
	src += '<tr><td>Relate by the same person:</td>';
	src += '<td><select onchange="setrelatedsearchby(this)" id="samePerson">';
	src += '<option value="">Choose a person...</option>';
	

	var persons =  getValueFrom(json, "persons", "person_name", -1);
	var index = 0;
	
	for (var person in persons) {
		src += '<option value="person' + index + '">' + persons[person] + '</option>';
		showrelatedworks['person' + index] = "&person_name=" + escape(addPlusses(persons[person]));
		runadvancedsearch['person' + index] = persons[person];
		index++;
	}
	src += '</select></td></tr><tr><td colspan="2">&nbsp;&nbsp;or</td></tr>'


// Related keywords
	
	var keywords =  getValueFrom(json, "work", "work_term", -1);
	if(keywords.length > 0) {
		src += '<tr><td>Relate by the same keyword:</td>';
		src += '<td><select onchange="setrelatedsearchby(this)" id="sameKeyword">';
		src += '<option value="">Choose a keyword...</option>';
		
	
		var index = 0;
		
		for (var keyword in keywords) {
			src += '<option value="keyword' + index + '">' + keywords[keyword] + '</option>';
			showrelatedworks['keyword' + index] = "&keywords=" + escape(keywords[keyword]);
			runadvancedsearch['keyword' + index] = keywords[keyword];
			index++;
		}
		src += '</select></td></tr><tr><td colspan="2">&nbsp;&nbsp;or</td></tr>'
	}

// Related types

	var types =  getValueFrom(json, "work", "work_type", -1);

	if(types.length > 0) {
	
		src += '<tr><td>Relate by the same type:</td>';
		src += '<td><select onchange="setrelatedsearchby(this)" id="sameType">';
		src += '<option value="">Choose a type...</option>';
		
		var index = 0;
		
		for (var type in types) {
			src += '<option value="type' + index + '">' + types[type] + '</option>';
			showrelatedworks['type' + index] = "&work_type=" + escape(typeToUri(types[type]));
			runadvancedsearch['type' + index] = types[type];
			index++;
		}
		src += '</select></td></tr>'
	}

	src += '<tr><td>&nbsp;</td><td><br /><br /><input id="frm_searchsubmit" type="button" value="search" onclick="showrelated();"></td></tr>'
	src += '</table>';
	src += '</form><br /><br />';

	src += '<div id="showrelation">'
	
	src += "</div>"

	src += "</div>"

	$("#related_content").empty().append(src);
	createPopups("#related_content");

} 


function setrelatedsearchtype(type) {
	if(type == "") {
		relatedSearchType = ""
	} else {
		relatedSearchType = type
	}

}

function setrelatedsearchby(selectElement) {
	if ((selectElement.id != "samePerson")&&(document.getElementById("samePerson") != null)) document.getElementById("samePerson").selectedIndex = 0;
	if ((selectElement.id != "sameKeyword")&&(document.getElementById("sameKeyword") != null)) document.getElementById("sameKeyword").selectedIndex = 0;
	if ((selectElement.id != "sameType")&&(document.getElementById("sameType") != null)) document.getElementById("sameType").selectedIndex = 0;

	type = selectElement.options[selectElement.selectedIndex].value;
	if(type == "") {
		relatedSearchBy = ""
	} else {
		relatedSearchBy = type
	}

}


function showrelated() {
	type = relatedSearchBy;
	if(type == "" || showrelatedworks[type] == "") {
	
	} else {
		src = "These relations are not active yet."
	
		var typename = '';
		searchparameters = showrelatedworks[type];
		if(relatedSearchType != "" ) {
			searchparameters += "&work_type=http://gama-gateway.eu/schema/WorkType/" + relatedSearchType;
			typename = 'works';
		} else {
			typename = relatedSearchType;		
		}
		searchparameters += "&" + $("#searchformSettings").formSerialize();
	
		$.getJSON(
			getSearchUrl(), 
			function(json) {
				// error
	
				oldthumbwidth = thumbwidth;
				oldthumbheight = thumbheight;
				
				thumbwidth = thumbwidthnopreview;
				thumbheight = thumbheightnopreview;
	
			  if(checkJson(json, "#showrelation") != "" ) {
	

				var oldtags = Tags;
				Tags= relatedtags;
		
				var tablesrc = '<p>More ' + typename + ' with ' + runadvancedsearch[type] + '</p>'
				tablesrc += getTableSkeletonHtml(json["object-array"][1], "title", false);
			
				var src = getTableContentHtmlRelated(json["object-array"][1], "title");
				src = src.replace("javascript:clickResult", "javascript:clickRelatedResult");
				
				Tags = oldtags;
					
				$("#showrelation").empty().append(tablesrc);
				$("#showrelation thead").remove();
				$("#showrelation tbody").append(src);
			
				}
	
				thumbwidth = oldthumbwidth;
				thumbheight = oldthumbheight;
				
							
			}
		)
	}

}

function startAdvancedSearch(type) {
	clearForm()
	hideBlackscreen()

	searchparameters = showrelatedworks[type];
	
//	$('#searchform' + resultType).clearForm();

	// there can be more persons
	var switchtype = type;
	if(type.substring(0,6) == "person") {
		switchtype = type.substring(0,6);
	}

	switch(switchtype) {
	case 'year':
		$("form#searchform" + resultType + " input#from").val(runadvancedsearch[type]);
		$("form#searchform" + resultType + " input#to").val(runadvancedsearch[type]);
		break;
	case 'artwork_title':
		$("form#searchform" + resultType + " input#work_title").val(runadvancedsearch[type]);
		break;
	case 'types':
		$("form#searchform" + resultType + " input#work_type").val(runadvancedsearch[type]);
		break;
	case 'person':
		$("form#searchform" + resultType + " input#work_type").val(runadvancedsearch[type]);
		break;
	}

	searchparameters = showrelatedworks[type];
	searchparameters += "&" + $("#searchformSettings").formSerialize();
	
	getResultList(""); // no sorttag
	
}


function clickRelatedResult(rowid, workid, manifid) {
	closeResultView();
	showResult(workid)
}


function getWorkMetadata(json) {
	var src = "";
	src += '<div id="metadata_data">';

	var manifestations = json.manifestations;

	if(manifestations.length == 0) {
		src += "This work has no manifestation data in the database.<br /><br />";
	} else {
		for (var i=0; (i < manifestations.length); i++) {
		
			src += "<p>";
			var title = sanitize("text", getValueFrom(json, "work", "work_title", i), 0)
			if(title == "") {
				title = "no title";
			}

			var manifurl = ""
			sanitize("text", getValueFrom(json, "manifestations", "manif_url", i), 0);
			if(manifurl != "") {
			
				title = '<a href="' + manifurl + '" target="_blank">' + title + '</a>';
			
			}
			var manif_date = sanitize("date", getValueFrom(json, "manifestations", "manif_date", i), 0);
			if (manif_date != "") title += " (" + manif_date + ")";
			src += "<label>Title</label>" + title + "<br />";
			
			var description = sanitize("text", getValueFrom(json, "manifestations", "manif_description", i), 0);
			if (description != "") src += "<label>Description</label>" + description + "<br />";
			
			var media_type = sanitize("text", getValueFrom(json, "manifestations", "media_type", i), 0);
			if (media_type != "") src += "<label>Format</label>" + media_type + "<br />";

			var manif_language = sanitize("text", getValueFrom(json, "manifestations", "manif_language", i), 0);
			if (manif_language != "") src += "<label>Language</label>" + manif_language + "<br />";

			var manif_format = sanitize("text", getValueFrom(json, "manifestations", "manif_format", i), 0);
			if (manif_format != "") src += "<label>Format</label>" + manif_format + "<br />";
			
			var duration = sanitize("duration", getValueFrom(json, "manifestations", "manif_length", i), 0);
			if (duration != "") src += "<label>Length</label>" + duration + "<br />";

			var sep = "";
			var properties = ""
			if(sanitize("text", getValueFrom(json, "manifestations", "manif_with_sound", i), 0) == 1) {
				properties = properties + "sound"
				sep = " and ";
			}
			if(sanitize("text", getValueFrom(json, "manifestations", "manif_with_colour", i), 0) == 1) {
				properties = properties + sep + "colour"			
			}
			if (properties != "") src += "<label>Properties</label>" + properties + "<br />";
			src += "</p>";

		}
	}
	src +="GAMA:"
	
	workid = getWorkId(json);
		
	src +="<ul>"
	src += '<li>Link: <a href="' + cmsbaseurl + 'index.php?id=search&workdetail=' + workid + '" target="_blank">' + cmsbaseurl + 'index.php?id=search&workdetail=' + workid + '</a></li>';
	src += '<li>Wiki: [wiki]' + workid + '[/wiki]</li>';
	src +="</ul>"

	src += "</div>"
		
	$("#metadata_content").empty().append(src);
	createPopups("#metadata_content");
}

function getWorkMovie(json) {
	
	accOpenMovie(getPreviewUrl(json), sanitize("text", getValueFrom(json, "work", "title", i), 0))
	
	workid = getWorkId(json);

	$("#acc_movie").append(src);
	
	
}

function viewUser(userid, userIndex, userName) {

	switchToUserDetail();

	$("#results").empty();

	$("form#searchform" + resultType + " input#person_name").val(addPlusses(userName));

	searchparameters = "&person_name=" + obligated(userName);

	getResultList('')

	getUserOverview(userid, userIndex);

	//enableTab(5)
	gotoSubTab(6)
}

function getUserOverview(userid, userIndex) {

	var userObject = null;
	
	if(true || userIndex == -1) {
		// query for the data
		
			$.getJSON(
				getUserUrl(userid),
				function(json) {
					userObject = json["object-array"][0][0];
					showUserOverview(userObject, userid)
				}
	)
		
	} else {
		userObject = globalUserData[userIndex];
		showUserOverview(userObject, userid)
	}
}

function showUserOverview(userObject, userid) {

	var src = "";
	
	src += '<div id="rel_data">';

	var results = new Array()
	results  = getValueFromPerson(userObject, "persons", "person_name", 0)

	src +=	"<h3>" + sanitizeUL(results, false)
	
	var year = sanitize("date", getValueFromPerson(userObject, "persons", "life_span"), 0);
	if(year != "") {
		src += " - " + year; 
	 }

	var country = sanitize("text", getValueFromPerson(userObject, "persons", "person_country_text"), -1);
	if(country != "") {
		src += " - " + country; 
	}
	 
	src += "</h3></div><input id='frm_back' type='button' value='Back' onclick='clickTab(1);' />";
	
	bodytext = "<p>" + sanitize("textlimited", getValueFromPerson(userObject, "persons", "biography"), 0, 5000) + "</p>";
	
	
	var personuri = userid;
	var personname = sanitize("text", getValueFromPerson(userObject, "persons", "person_name"), 0);
	bodytext +="<ul>"
	bodytext += '<li>Link: <a href="' + cmsbaseurl + 'index.php?id=search&userid_searchword=' + personuri + '&username_searchword=' + personname + '" target="_blank">' + cmsbaseurl + 'index.php?id=search&userid_searchword=' + personuri + '&username_searchword=' + personname + '</a></li>';
	bodytext += '<li>Wiki: [wiki]' + personuri + '[/wiki]</li>';
	bodytext +="</ul>"	
	
	$("#generictabcontent").empty().append(src);
	$("#biocontent").empty().append(bodytext);
	
	createPopups("#generictabcontent");
}

function getRelatedWorks(manifestid, shotid) {

	$("#results").empty();

	searchparameters = "&manifid=" + manifestid + "&shotnr=" + shotid;
				
	startLoader("Searching...");

	$.getJSON(
		getRelatedSearchUrl(), 
//							  "params", 
		function(json) {

			var stringtest = "" + json;

			if(stringtest == "" || stringtest.substring(0,5) == '<html') {

				errorMessage(ErrorFrame, "An error was encountered. Please try again later.");
				endLoader();
				
			} else if(json["object-array"].length < 2  || json["object-array"][1].length == 0) {

				errorMessage(ErrorFrame, "No Results found.");
				endLoader();
				
			} else {
			
				showResultsRelatedWorks(json["object-array"], "")
				
				getFacets(json["object-array"][2], false);
			}
			
			endLoader();
		}
	)

	//enableTab(5);
	gotoSubTab(6);
	
	getWorkOverview(shotid);
}

function getWorkOverview(shotid) {

	var work = globalwork;
	
	var src = "";
	
	
	src += '<div id="rel_data">';

	var results = new Array()
	results  = getValueFrom(work, "persons", "person_name", 0);
//.concat(getValueFrom(work, "collectives", "person_name", 0)) 

	src +=	"<h3>" + sanitize("text", getValueFrom(work, "work", "work_title"), 0) + " - " + sanitizeUL(results, false) + " - " + 
			 sanitize("date", getValueFrom(work, "work", "work_created"), 0) + " - " + sanitize("archive", getValueFrom(work, "work", "provided_by"), 0) + "</h3>";

	src += "</div>"	
	
	bodytext = "<p>" + sanitizeShot(work, (shotid), 
									sanitize("text", getValueFrom(work, "work", "work_title"), 0)) + sanitize("textlimited", getValueFrom(work, "work", "work_description"), 0, 500) + "</p>";
	
	bodytext += "<p class='break'>Shot " + (toInt(shotid)+1) + "</p>";
	
	$("#generictabcontent").empty().append(src);
	$("#biocontent").html(bodytext);

	createPopups("#generictabcontent");
}


function relateShots(manifestid, shotid) {

	$('#searchform' + resultType).clearForm();
	
	clearResults();
	clearFacets();
	getRelatedWorks(manifestid, shotid);
	closeResultView()

	return false;
}

function resetFacet(name) {

	facetList[name]["value"] = "";
	facetList[name]["query"] = "";

//	$("#searchform").submit();

	continueSearch() 
}

function setNewPage() {

	var pagestr = queryString("pagenumber");
	page = -1;

	if(pagestr = "undefined" ) {
		page = 1;
	} else {
		page = toInt(pagestr);
	}
}

function searchParamEntered() {

	return  $("form#searchform" + resultType + " input#artist_title").val() == "" && 
			$("form#searchform" + resultType + " input#freetext").val() == "" &&
			$("form#searchform" + resultType + " input#person_name").val() == "" &&
			$("form#searchform" + resultType + " input#work_title").val() == ""
}

function getFacetList() {
	
	var facet;
	facetqs= "";
	
	for (facet in facetList) {
	
		if (facetList[facet]["query"] != "") {
			facetqs += "&" + facetList[facet]["query"];
		}
	}
	
	return facetqs
}

function getFacetHashList() {
	
	var facet;
	var hashresult = new Array();

	var hashlist = resultType + ':';
	var hashsep = "";

	var name = resultType + ':';
	var namesep = '';

	for (facet in facetList) {

		hashlist = hashlist + hashsep + hashlabels[index].tag + ":" + hashvalue;
		hashsep = ";";

		if (facetList[facet]["query"] != "") {
			facetqs += "&" + facetList[facet]["query"];
		}
	}
	
	return facetqs
}

// do the actual searching

/*
function redrawResults(sorttag) {
	getResultList(sorttag);
	clearWorkData(true);  
}
*/

function showResults(sorttag) {

	clearFacets();
	clearResults();
	clearWorkData(true);

	searchparameters = "&" + $("#searchform" + resultType).formSerialize();
  	searchparameters += getFacetList();
	searchparameters += "&" + $("#searchformSettings").formSerialize();

//console.log("#searchform" + resultType + ":" + searchparameters)

//searchparameters += "&"

var fttag = /freetext=&/;
searchparameters= searchparameters.replace(fttag, "");
var attag = /artist_title=&/;
searchparameters= searchparameters.replace(attag, "");

//	redrawResults(sorttag);
	getResultList(sorttag);
	
	
	return false;
}

// entry from the form, restart the search
function restartSearch(formData, jqForm, options) {

	clearFacets();
	clearResults();
	clearWorkData(true);

	if(searchParamEntered()) {
		errorMessage(ErrorFrame, "Enter a search term.");
		return false;
	} else {
		resetSearchForm()

		return showResults('')
	}
}

// entry from a function, continue the search
function continueSearch() {

	if(searchParamEntered()) {
		errorMessage(ErrorFrame, "Enter a search term.");
		return false;
	} else {
		return showResults('')
	}
}

function submitGotoPage(formData, jqForm, options) {

	newvalue = toInt(formData[0].value)
	
	if(newvalue < 1 || (newvalue + "") == "NaN") {
	  newvalue = 1;	

	} else if (newvalue > maxnrpages) {
	  newvalue = maxnrpages;

	}

	gotoPage(newvalue);
	
 return false;
}

// click activation functions
function gotoPage(newpage) {
	var page = newpage;

	$("form#searchform" + resultType + " input#pagenumber").val(page);
	
//	$("#searchform").submit();
	continueSearch()
}

function toggleView() {
	if(preview) {
		pagesize = previewOff;
		thumbwidth = thumbwidthnopreview;
		thumbheight = thumbheightnopreview
		
		preview = false;
	} else {
		pagesize = previewOn;
		thumbwidth = thumbwidthpreview;
		thumbheight = thumbheightpreview
		
		preview = true;
	}

//	$("#searchform").submit();
	continueSearch()
}


function sortColumn(sorttag, direction) {

	if(getSortTag() == sorttag) {

		if (direction == '' || direction == 'down') {
			direction = 'up'
		} else {
			direction = 'down'
		}
	
	} else {
	
		direction = 'up';
	}

	$("form#searchform" + resultType + " input#sorttag").val(sorttag);
	$("form#searchform" + resultType + " input#sortdirection").val(direction);
	
	// set the direction
	for (var i=0; (i < Tags.length); i++) {

		if(Tags[i]['sorttag'] == sorttag ) {

			Tags[i]['direction'] = direction;

			if(direction == "up") {
				Tags[i]['directionsrc'] = downimage
			} else {
				Tags[i]['directionsrc'] = upimage
			}
		} else {

			Tags[i]['direction'] = "";
			Tags[i]['directionsrc'] = ''
		}
	}
	
	showResults(sorttag)
}

function clickResult(rowid, workid) {

	showResult(workid);
/*
	} else {

		$("#results td").css("background", "none" );
		clearWorkData(false);

		hideBlackscreen()
		$("#extras").css("display", "none")

	}
*/
}

function showResult(workid) {

		$("#acc_movie").empty()
				
		// show the work data
		getWorkData(workid);
}

function resizeResultPopup(hasvideo) {
		if(hasvideo) {
			$("#extras").addClass("big_popup")
			$("#extras").removeClass("medium_popup")
			width = 948
			margin = 403
		} else {
			$("#extras").addClass("medium_popup")
			$("#extras").removeClass("big_popup")
			width = 565
			margin = 0
		}

		var top = 30 + $(window).scrollTop();
		var left = $(window).width()/2 - (width/2) + $(window).scrollLeft();
		var height = $(window).height() - $(window).scrollTop() - 60;

		showBlackscreen();

		$("#extras")
			.css("position", "absolute")
			.css("display", "none")
			.css("top",top)
			.css("left",left)
			.css("width",width)
			.css("z-index","9")
			.fadeIn("fast");

		$("#info_header")
			.css("margin-left", margin)
		$("#artist_header")
			.css("margin-left", margin)
		$("#strip_header")
			.css("margin-left", margin)
		$("#metadata_header")
			.css("margin-left", margin)
		$("#related_header")
			.css("margin-left", margin)
		$("#info_content")
			.css("margin-left", margin)
		$("#artist_content")
			.css("margin-left", margin)
		$("#strip_content")
			.css("margin-left", margin)
		$("#metadata_content")
			.css("margin-left", margin)
		$("#related_content")
			.css("margin-left", margin)
			
	    $("#extras").draggable({handle: "#handle"});

}

function closeResultView() {
		$("#results td").css("background", "none" );
		clearWorkData(false);

		hideBlackscreen()
		$("#extras").css("display", "none")

}

function clickTab(tabnr) {

	$('#biocontent').empty();
	
	switch(tabnr) {
		case 0:
			// All tab
			switchToAll()
			break;
		case 1:
			// user tab
			switchToUser()
			break;
		case 2:
			// work tab
			switchToWorks()
			break;
		case 3:
			// event tab
			switchToEvents()
			break;
		case 4:
			// resource tab
			switchToResources()
			break;
		default:
			switchToAll()

	}

	clearWorkData(true);
	clearFacets();
	clearResults();

	gotoTab(tabnr)
	
	$("form#searchform" + resultType + " input#sorttag").val();
	
//	return false;
}

function gotoTab(tabnr) {
	
	var divs = $("#searchtabs div");
	
	$(divs).removeClass("active")
	$(divs[tabnr]).addClass("active")

	var forms = $("#advanced_searchbar form");
	$(forms).addClass("hidden")
	$(forms[tabnr]).removeClass("hidden")

	$("#advanced_searchbar form:eq(" + tabnr + ") input.defaultFocus").focus();
}

function gotoSubTab(tabnr) {

   var forms = $("#advanced_searchbar form");
   $(forms).addClass("hidden")
   $(forms[tabnr]).removeClass("hidden")

   $("#biocontent").empty()
}

function disableTab(tabnr, title) {
	
	$($("#searchtabs div").get(tabnr)).addClass("disabled");
	
}

function enableTab(tabnr, title) {
	
   $($("#searchtabs div").get(tabnr)).removeClass("disabled");
	
}

function clickFacet(name, value, label, searchvalue) {

//  $("input#" + name).val(value);
//  $("select#" + name).val(value);
	
	facetList[name]["value"] = value;
	
	if(label=="keywords") {
		facetList[name]["query"] = label + "_facet=" + '"' + searchvalue + '"';
	} else {
		facetList[name]["query"] = label + "_facet=" + searchvalue;
	}

//	$("#searchform").submit();
	continueSearch()

}

function clickFacetDate(name, value, name2, value2) { 

	facetList["created"]["value"] = value + " - " + value2;
	facetList["created"]["query"] = "from_facet=" + value + "&to_facet=" + value2;
	
//	$("#searchform").submit(); 
	continueSearch()

}

// form resetting functions
function resetFacets() {
	
	for (var facet in facetList) {
	
		facetList[facet]["value"] = "";
		facetList[facet]["query"] = "";
	}
}

function resetSearchForm() {
	$("form#searchform" + resultType + " input#sorttag").val(default_sorttag);
	$("form#searchform" + resultType + " input#sortdirection").val("up");
	$("form#searchform" + resultType + " input#pagenumber").val("1");
	resetFacets()
}

function resetForm(){
	$('#searchform' + resultType).clearForm();
	resetSearchForm()
}

// clear the interface functions
function clearForm(){
	clearWorkData(true);
	clearFacets();
	clearResults();
	resetForm();
}

function clearResults() {
	$("#results").empty();
}

function clearFacets() {
	$("#facets").empty();
}

function clearWorkData(hidediv){

	closeAccordeon();
	
	accordeonFilled = false;

	$("#info_content").empty().append("<p></p>");
	$("#artist_content").empty().append("<p></p>");
	$("#strip_content").empty().append("<p></p>");
	$("#metadata_content").empty().append("<p></p>");
	$("#related_content").empty().append("<p></p>");

	$("#info_header a").html("Description");
	$("#artist_header a").html("Person(s)");
	$("#strip_header a").html("Film strip");
	$("#metadata_header a").html("Media");
	$("#related_header a").html("Related");

	if(hidediv) {
		$("#extras").css("display", "none");
	}
}

function transformKeyworData(data) {

	var newdata = new Array();
	newdata['all'] = new Array();
	for (i=0;i<26;i++)
	{
		newdata[String.fromCharCode(65+i)] = new Array();
	}
	for (var item in data)
	{
		newdata['all'] = newdata['all'].concat(data[item][1]);
	}
	newdata['all'] = newdata['all'].sort();
	for (var item in newdata['all'])
	{	
		var myFirstLetter = newdata['all'][item].substr(0,1).toUpperCase();
		newdata[myFirstLetter] = newdata[myFirstLetter].concat(newdata['all'][item]);
	}
	return newdata;

}

// make one array for autocomplete
function makeSortedArray(array)
{
	var myArray = [];
	for (var item in array)
	{
		myArray = myArray.concat(array[item]);
	}
	return myArray.sort();
}

var selector_columns = 3;
// functions for selector

function showSelector(type)
{
	showBlackscreen();

	//if (type == "keywords")
	if (true)
	{
		$('#selector').addClass('big_popup');
		$('#selector').removeClass('medium_popup');
		var width = 950;
	}
	else
	{
		$('#selector').addClass('medium_popup');
		$('#selector').removeClass('big_popup');
		var width = 565;
	}
	
	var top = $(window).scrollTop();
	var left = $(window).width()/2 - (width/2) + $(window).scrollLeft();
	var height = $(window).height() - $(window).scrollTop() - 60;

	$("#selector").css("position", "absolute");
	$("#selector").css("padding", "20px");
	$("#selector").css("top",top);
	$("#selector").css("left",left);
	$("#selector").css("width",width);
	$("#selector").css("z-index","9");
	
	var myHtml = new Array();
	for(j=0;j<selector_columns;j++) {
		myHtml[j] = ""
	}


	var i = 0;
	if (type == "keywords")
	{
		for (var item in DataStore[type])
		{
			if (item != "all")
			{
				myHtml[0] += "<a href='javascript:showSub(\"" + type + "\", \"" + escape(item) + "\");'>" + addSpace(item) + "</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
			}
		}
	}
	else
	{
		for (var item in DataStore[type])
		{
			myHtml[i] += "<a href='javascript:showSub(\"" + type + "\", \"" + escape(item) + "\");'>" + addSpace(item) + "</a><br />";
			i++
			if(i == selector_columns) i = 0;
		}
	}
	
	$('.selector_info').addClass('hidden');
	$('#info_button').remove();
	$('#selectormain').append('<img id="info_button" onclick="$(\'#' + type + '_info\').toggleClass(\'hidden\');" alt="info" src="fileadmin/templates/img/icon_info2.png"/>');
	
	$("#selectormain0").html(myHtml[0]);
	$("#selectormain1").html(myHtml[1]);
	$("#selectormain2").html(myHtml[2]);

	$("#selectorsub0").html("");
	$("#selectorsub1").html("");
	$("#selectorsub2").html("");
	
	$("#selector").removeClass("hidden");
	$("#selector").draggable({handle: "#handle"});
}

function hideSelector()
{
	$("#selector").addClass("hidden");
	hideBlackscreen();
	
}

function showSub(type, cat)
{
	var i =0;
	var myHtml = new Array();
	
	for(j=0;j<selector_columns;j++) {
		myHtml[j] = ""
	}
	
	data = DataStore[type];
	for (var item in data[cat])
	{
		myHtml[i] += "<a href='javascript:selectSelectorItem(\"" + type + " \", \"" + addSpace(data[cat][item]) + "\");'>" + addSpace(data[cat][item]) + "</a><br />";
		i++
		if(i == selector_columns) i = 0;
	}
	
	$("#selectorsub0").html(myHtml[0]);
	$("#selectorsub1").html(myHtml[1]);
	$("#selectorsub2").html(myHtml[2]);
}

function createDropDown(type, cat)
{
	var myHtml = "<option value=\"\">&gt;Select a type</option>";
	
	for (var item in DataStore[type][cat])
	{
		myHtml += "<option value=\"" + DataStore[type][cat][item] + "\">" + addSpace(DataStore[type][cat][item]) + "</option>";
	}
	$("#gama_worktype_" + cat).html(myHtml);
}

function selectSelectorItem(type, item)
{
	$("form#searchform" + resultType + " input#" + type).val(item);

	hideSelector();
}

function getType(resulttype) {

	var type = "";

    switch(resulttype) {
    case 'All':
		type = $("form#searchform" + resultType + " input#gama_worktype").val();
        break;
    case 'Person':
    	// no types
        break;
    case 'Works':
		type = $("#gama_worktype_Artwork").val();
        break;
    case 'Events':
		type = $("#gama_worktype_Event").val();
        break;
    case 'Resources':
		type = $("#gama_worktype_Resource").val();
        break;
    }

	return type;	
}

function typeToTypeUri(qs) {

	var type = getType(resultType);
	var typeuri = "";

	if(type != "") {
		typeuri = typeToUri(removeSpace(type));
	
		var re=/work_type=/g;

		qs = qs.replace(re,
						 'dummy='); 
	
		qs = qs + '&work_type=' + typeuri;
	}  

	return qs
}

function escapeObligated(qs, tag) {

	value = getQsValue(qs, tag);

	if(value != "" ){
		qs = qs.replace('&' + tag + '=' + value + '&',
						'&' + tag + '=' + obligatedQS(value) + '&'); 
	}	

	return qs
}

function escapeQuotes(qs, tag) {

	var value =getQsValue(qs, tag);

	if(value != "") {
		qs = qs.replace('&' + tag + '=' + value + '&',
						'&' + tag + '="' + value + '"&'); 
	}
	
	return qs
}


function typeToUri(type) {

	var typeuri = "";
	for (var cat in DataStore["gama_worktype"]) {

		for (var item in DataStore["gama_worktype"][cat]) {
		  if( DataStore["gama_worktype"][cat][item] == type) {
			  typeuri = "http://gama-gateway.eu/schema/WorkType/" + cat + "/" + type

		  }
		}
	}
	return typeuri;
}

var hashlabels = 
	new Array(
		{name: '', tag:'ft', type: 'text', ident:'input#freetext', loc: 'search'},
		{name: 'title=', tag:'ttl', type: 'text', ident:'input#work_title', loc: 'search'},
		{name: 'name=', tag:'nm', type: 'text', ident:'input#person_name1', loc: 'search'},
		{name: 'name=', tag:'pnm', type: 'text', ident:'input#person_name', loc: 'search'},
		{name: 'from=', tag:'frm', type: 'text', ident:'input#from', loc: 'search'},
		{name: 'to=', tag:'to', type: 'text', ident:'input#to', loc: 'search'},
		{name: 'archive=', tag:'arch', type: 'multiple', ident:'select#archive', loc: 'search'},
		{name: 'keyword=', tag:'kw', type: 'text', ident:'input#keyword', loc: 'search'},
		{name: 'type=', tag:'wt', type: 'text', ident:'input#gama_worktype', loc: 'search'},
		{name: 'preview=', tag:'prev', type: 'checkbox', ident:'input#previewonly', loc: 'search'},
		{name: 'country=', tag:'cntry', type: 'text', ident:'input#country', loc: 'search'},
		
		{name: '-1', tag:'pn', type: 'text', ident:'input#pagenumber', loc: 'search'},
		{name: '-1', tag:'sd', type: 'text', ident:'input#sortdirection', loc: 'search'},
		{name: '-1', tag:'st', type: 'text', ident:'input#sorttag', loc: 'search'},
		{name: '-1', tag:'lang', type: 'select', ident:'select#language', loc: 'setting'},
		{name: '-1', tag:'qlang', type: 'select', ident:'select#translate', loc: 'setting'},
		{name: '-1', tag:'rpp', type: 'select', ident:'select#searchpagesize', loc: 'setting'}
	);

function generateHashList() {

	var hashresult = new Array();
	
	var hashsep = "";
	var namesep = '';

	var hashlist = resultType + ':';
	var name = resultType + ':';

	for (var index in hashlabels ) {
	
		var formname = '';
		if(hashlabels[index].loc == 'setting') {
			formname = '#searchformSettings';
		} else {
			formname = '#searchform' + resultType;
		}
		
		namevalue = $(formname + " " + hashlabels[index].ident).fieldValue();

		var namevalue = '';
		if(hashlabels[index].loc == 'setting') {
			namevalue = $('#searchformSettings' + " " + hashlabels[index].ident).fieldValue();
		} else {
			namevalue = $('#searchform' + resultType + " " + hashlabels[index].ident).fieldValue();
		}
		
		var hashvalue = escape(namevalue + "");

		hashlist = hashlist + hashsep + hashlabels[index].tag + ":" + hashvalue;
		hashsep = ";";

		if( namevalue != "" ) {
			if(hashlabels[index].name != -1) {
				name = name + namesep + hashlabels[index].name + "'" +  namevalue + "'";
				namesep = ' and ';
				
			}

		}
		
	}
		
	
//  	console.log(getFacetList());


	hashresult['name']=name;
	hashresult['list']=hashlist;

	return hashresult

}

function interpretHashList(hashlist) {

	for (var index in hashlabels) {

			var currentTag = hashlabels[index].tag + ":";
			var strindex = hashlist.indexOf(currentTag );

			if(  strindex > -1 ) {
	
				var value = hashlist.substring(strindex + currentTag.length, hashlist.length);

				if(index < (hashlabels.length - 1)) {
					var nextTag = hashlabels[toInt(index) + 1].tag;
					value = value.substring(0,value.indexOf(";" + nextTag));
				} 
	
			} else {
				value = "";
			}

			if(hashlabels[index].loc == 'setting') {
				formname = '#searchformSettings';
			} else {
				formname = '#searchform' + resultType;
			}

			value = decodeURI(value)
			if (hashlabels[index].type == "multiple") {
			
				$(formname + " " + hashlabels[index].ident + " option").removeAttr("selected")


				values = value.split(",")


				for (var index in values) {
					$(formname + ' option[value=\'' + values[index] +'\']').attr("selected",'selected')
				}

			} else if (hashlabels[index].type == "checkbox") {

				$(formname+  " " + hashlabels[index].ident).attr("checked",(value == "yes"))

			} else {

				$(formname + " " + hashlabels[index].ident).val(value)

			}
					
	}

}

var currentHash = '';
function CheckForHash(){
/*
	if(document.location.hash && (document.location.hash != currentHash) ){
		var HashLocationName = document.location.hash;
		HashLocationName = HashLocationName.replace("#","");
		currentHash = document.location.hash;
		
		interpretHashList(HashLocationName);
		
	} else {
	}
*/
}

function RenameAnchor(anchorid, anchorname){
	document.getElementById(anchorid).name = anchorname;
}

function RedirectLocation(){

	var hashresult = generateHashList()
	
	RenameAnchor("LocationAnchor", hashresult['list']);
	
//	document.location = searchpage + "#" + hashresult['list'];
	document.title = "GAMA Search - " + hashresult['name'];

}

$(document).ready(function() { 

    // preload the iconurl list
    if(globalconfigurl == "") {
		// use the default
    } else {

        $.getJSON(globalconfigurl,"param",
            function(data)
            {
				//iconurl = data["repo.mediabaseurl"]
				iconurl = baseiconurl + "V" + data["repo.idxversion"] + "/";

            }
        );
    }

	var HashCheckInterval = setInterval("CheckForHash()", 500);
	window.onload = CheckForHash;

	$("input:disabled").css("background", "#222");
	$("select:disabled").css("background", "#222");
	
	$('#searchformWorks').ajaxForm( { beforeSubmit: restartSearch } ); 
	$('#searchformUsers').ajaxForm( { beforeSubmit: restartSearch } ); 
	$('#searchformAll').ajaxForm( { beforeSubmit: restartSearch } ); 
	$('#searchformEvents').ajaxForm( { beforeSubmit: restartSearch } ); 
	$('#searchformResources').ajaxForm( { beforeSubmit: restartSearch } ); 
	
	$('#prevnext01').ajaxForm( { beforeSubmit: submitGotoPage } ); 
	$('#prevnext02').ajaxForm( { beforeSubmit: submitGotoPage } ); 
	

	$.ajaxSetup({ 
		timeout: 600000,
		error: ajaxError,
		scriptCharset: "utf-8" , 
		contentType: "application/json; charset=utf-8"
	});
	
	clearWorkData(true)
	resetSearchForm();

	clickTab(0)
	
	// ALl
	var searchparameter = decodeURI(queryString("frm_searchword"));
    var searchtab = queryString("frm_searchtab");

	if(searchparameter != "" && searchtab != "") {
        
        switch(searchtab) {
        case 'all':
            clickTab(0);
	        $("form#searchform" + resultType + " input#freetext").val(searchparameter);
            break;
        case 'person':
            clickTab(1);
            $("form#searchform" + resultType + " input#person_name").val(searchparameter);
            break;
        case 'artwork':
            clickTab(2);
            $("form#searchform" + resultType + " input#freetext").val(searchparameter);
            break;
        case 'event':
            clickTab(3);
            $("form#searchform" + resultType + " input#freetext").val(searchparameter);
            break;
        case 'resource':
            clickTab(4);
            $("form#searchform" + resultType + " input#freetext").val(searchparameter);
            break;
        case 'worktitle':
            clickTab(0);
	        $("form#searchform" + resultType + " input#work_title").val(addPlusses(searchparameter));
            break;

        }
       
       	// wait for URL to be loaded
       	
       	
		restartSearch(); // no sorttag
	}

	// A user is searched
	searchUserId = queryString("userid_searchword");
	searchUserName = queryString("username_searchword");
	if(searchUserId != "" && searchUserName != "") {
	
		clickTab(1);
		viewUser(searchUserId, -1, decodeURI(searchUserName))	

	} else if(searchUserName != "") {
	
		clickTab(1);
        $("form#searchform" + resultType + " input#person_name").val(searchUserName);
		restartSearch(); // no sorttag

	}

	
	// workuri is passed on
	workdetail = queryString("workdetail");
	if(workdetail != "") {
		showResult(workdetail)	
	}

	// preload the work type list
	if(worktype_url == "") {
		DataStore["gama_worktype"] = null;
	} else {

		$.getJSON(worktype_url,"param",
			function(data)
			{
				DataStore["gama_worktype"] = data.worktypes;

				$("#gama_worktype").autocompleteArray(makeSortedArray(DataStore["gama_worktype"]), { autoFill:true, minChars:1 });
				
				createDropDown("gama_worktype", "Artwork");
				createDropDown("gama_worktype", "Resource");
				createDropDown("gama_worktype", "Event");
			}
		);
	}

	if(workterm_url == "") {
		DataStore["keywords"] = null;
	} else {

		$.getJSON(workterm_url,"param",
			function(data)
			{
				DataStore["keywords"] = transformKeyworData(data.statickeywords.list);
				
				
				$("#keywords").autocompleteArray(makeSortedArray(DataStore["keywords"]), { autoFill:true, minChars:1 });
			}
		);
	}
	

	if(personCountry_url == "") {
//
	} else {

		$.getJSON(personCountry_url,"param",
			function(data)
			{
				createCountryDropDown(data["artistcountries"]["list"]);
			}
		);
	}
	
});

function createCountryDropDown(data)
{
	var myHtml = "<option value=\"\">&gt;Select a country</option>";
	
	data = data.sort()
	
	for (var item in data)
	{
		myHtml += "<option value=\"" + data[item] + "\">" + data[item] + "</option>";
	}	
	$("#country").html(myHtml);
}
