function isset( variable ){
	return( typeof( variable ) != 'undefined' );
}

function shorten(string, length, middle){
	string = string.toString();
	if(string.length > length && isset(middle) && middle){
		var sublength = Math.floor(length/2);
		var firsts = string.substring(0, sublength);
		var seconds = string.substring(string.length - sublength, string.length);
		return firsts+"..."+seconds;
	}
	else if(string.length > length)
		return string.substring(0, length)+"...";
	return string;
}

(function (jQuery) {

	AjaxSolr.theme.prototype.simple = function (item, index, addbookmark) {
		var url = '';
		jQuery.each(item.LocalAttributeValueList.raw.url, function(index, value) { 
			url += value;
		});
		var output = "<div class='record'>";
		output += '<h2><a id="link_'+index+'" href="'+url+'" class="search-result-link">' + item.LocalAttributeValueList.name + '</a></h2>';
		output += "<p>"+item.LocalAttributeValueList.highlight+"</p>";
		output += '<p class="record-link-underline" class="search-result-link"><a id="link_'+index+'_1" href="'+url+'">'+shorten(url, 70, true)+'</a></p>';
		if(addbookmark)
			output += "<div class='bookmark-item'><input type='button' name='SaveBookmark' value='Bookmark' title='Bookmark this item' onClick='ajaxBookmark(\""+url+"\", \""+ item.LocalAttributeValueList.name +"\");'></div>";
		output += "</div>";
		return output;
	};

	AjaxSolr.theme.prototype.metadata = function (item, index, addbookmark) {
		
		var output = "<div class='record metadata'>";
		//alert(item.LocalAttributeValueList.raw.title);
		if(isset(item.LocalAttributeValueList.raw.url))
			output += '<h2><a id="link_'+index+'" href="'+item.LocalAttributeValueList.raw.url+'" class="search-result-link">' + item.LocalAttributeValueList.raw.title +'</a> '+ AjaxSolr.theme('metaicon', item.LocalAttributeValueList.raw)+ '</h2>';
		else
			output += '<h2>' + item.LocalAttributeValueList.raw.title + '</h2>';	
		if(isset(item.LocalAttributeValueList.raw.description))		
			output += '<p>'+shorten( item.LocalAttributeValueList.raw.description, 180, false )+'</p>';
		if(isset(item.LocalAttributeValueList.raw.url)){
			output += '<p><a id="link_'+index+'_1" href="'+item.LocalAttributeValueList.raw.url+'" class="search-result-link">'+shorten(item.LocalAttributeValueList.raw.url, 70, true)+'</a></p>';
			if(addbookmark)
				output += "<div class='bookmark-item'><input type='button' name='SaveBookmark' value='Bookmark' title='Bookmark this item' onClick='ajaxBookmark(\""+item.LocalAttributeValueList.raw.url+"\", \""+ item.LocalAttributeValueList.raw.title +"\");'></div>";
		}
		output += AjaxSolr.theme('metadatafull', item);
		output += "</div>";
		
		return output;
	};

	AjaxSolr.theme.prototype.metadatafull = function (item) {
		var output = '<p class=\"metadata-link record-link-underline\"><a class="ajaxmetadata-'+ item.LocalAttributeValueList.raw.id +'" href="">'+getTranslation('View full metadata record')+'</a></p>';
		output += '<div class="meta-holder-container">';
		output += '<div class="meta-holder" id="ajaxmetadata-'+item.LocalAttributeValueList.raw.id+'">';
		output += '<div class="full-metadata">';
		output += '<h2>'+getTranslation('Full Metadata Record for ID')+' '+item.LocalAttributeValueList.raw.id+':'+item.LocalAttributeValueList.raw.title+'</h2>'
		output += '<dl><dt class="clearfix">'+getTranslation('Date created')+':</dt>';
		output += '<dd class="clearfix">'+item.LocalAttributeValueList.raw.timestamp+'</dd>';	
		if(isset(item.LocalAttributeValueList.raw.description)){
			output += '<dt class="clearfix">'+getTranslation('Description')+':</dt>';
			output += '<dd class="clearfix">'+item.LocalAttributeValueList.raw.description+'</dd>';
		}
		
		if(isset(item.LocalAttributeValueList.raw.contenttype)){
			output += '<dt class="clearfix">'+getTranslation('Format')+':</dt>';
			output += '<dd class="clearfix">'+item.LocalAttributeValueList.raw.contenttype+'</dd>';
		}

		if(isset(item.LocalAttributeValueList.raw.id)){
			output += '<dt class="clearfix">'+getTranslation('Identifier')+':</dt>';
			output += '<dd class="clearfix">'+item.LocalAttributeValueList.raw.id+'</dd>';
		}

		if(isset(item.LocalAttributeValueList.raw.language)){
			output += '<dt class="clearfix">'+getTranslation('Language')+':</dt>';
			output += '<dd class="clearfix">'+item.LocalAttributeValueList.raw.language+'</dd>';
		}

		if(isset(item.LocalAttributeValueList.raw.keyword)){
			jQuery.each(item.LocalAttributeValueList.raw.keyword, function(index, keyword) { 
				output += '<dt class="clearfix">'+getTranslation('Subject keyword')+':</dt>';
				output += '<dd class="clearfix">'+keyword+'</dd>';
			});
		}
		output += '</dl>';
		output += '<ul class="clearfix meta-bottom-link-change-font-size">';
		output += '<li><a class="ajaxboxCloseContent cancel cancel-extra-marg-top" onclick="return false;" href="">'+getTranslation('close metadata record')+'</a></li>';
		output += '<li class="cancel cancelExt cancel-extra-marg-top meta-custom-li-one"><!-- a class="cancel cancelExt cancel-extra-marg-top" href="" -->'+getTranslation('Or to return to search results')+'<!-- /a --></li>';
		output += '<li><a class="cancel cancelExt cancelExtPrint ajaxcancelExtPrint" href="">'+getTranslation('Print')+'</a></li>';
		output += '</ul>';
		output += '</div>';
		output += '</div>';
		output += '</div>';
		return output;
	};

	
	AjaxSolr.theme.prototype.school = function (item, index, addbookmark) {
		var output = "<div class='record school'>";
		if(isset(item.LocalAttributeValueList.raw.web_site_t)){
			output += '<h2><a id="link_'+index+'" href="'+item.LocalAttributeValueList.raw.web_site_t+'" class="search-result-link bookmark-link">' + item.LocalAttributeValueList.raw.institution_name_t + '</a></h2>';
			if(addbookmark)
				output += "<div class='bookmark-item'><input type='button' name='SaveBookmark' value='Bookmark' title='Bookmark this item' onClick='ajaxBookmark(\""+item.LocalAttributeValueList.raw.url+"\", \""+ item.LocalAttributeValueList.raw.title +"\");'></div>";
		}
		else
			output += '<h2>' + item.LocalAttributeValueList.raw.institution_name_t + '</h2>';
		output += "</div>";
		return output;
	};

	AjaxSolr.theme.prototype.pagination = function (offset, item_limit, item_count) {
		var output = "";
		var left_max = 7;
		var right_max = 6;
		var page_count = Math.ceil( item_count/item_limit );
		var current_page = Math.min(page_count, Math.ceil( offset/item_limit ));
		var item_previous = ( current_page * item_limit ) - item_limit;
		var item_next = ( current_page * item_limit ) + item_limit;
		var left_length=Math.min(current_page, left_max);
		var right_length=Math.max(Math.min(page_count - current_page - 1, right_max),0);
		if (page_count > 1){
			output += '<ul class="number-ul">';
			if(item_previous < 0)
				output += '<li class="previous-off clearfix"><span>&#60; '+getTranslation('Prev')+'</span></li>';
			else					
				output += '<li class="clearfix"><a href="#tkibar" class="pagination-link" rel="'+item_previous+'">&#60; Prev</a></li>';
			if(current_page > left_max){
				output += '<li class="clearfix">1';
				if((current_page - left_length) > 1)
					output += '<li><span>...</span></li>';
				output += '</li>';
			}
			for(index = 1; index <= left_length; index++)
				output += '<li class="clearfix"><a href="#tkibar" class="pagination-link" rel="'+((current_page - left_length) + index - 1) * item_limit+'">'+((current_page - left_length) + index)+'</a></li>';
			output += '<li class="active clearfix"><span>'+(current_page + 1)+'</span></li>';
			for(index = 1; index <= right_length; index++)
				output += '<li class="clearfix"><a href="#tkibar" class="pagination-link" rel="'+(current_page + index) * item_limit+'">'+(current_page + 1 + index)+'</a></li>';

			if (page_count > (current_page + right_max + 1)){
				if ((current_page + right_max + 2)< page_count)
					output += '<li><span>...</span></li>';
				output += '<li class="clearfix"><a href="#tkibar" class="pagination-link" rel="'+(page_count - 1) * item_limit+'">'+page_count+'</a></li>';
			}

			if(item_next < item_count)
				output += '<li class="next clearfix li-no-border"><a href="#tkibar" class="pagination-link" rel="'+item_next+'">Next &#62;</a></li>';
			else					
				output += '<li class="next clearfix li-no-border"><span>'+getTranslation('Next')+' &#62;</span></li>';

			output += '</ul>';
		}
		return output;
	};

	AjaxSolr.theme.prototype.metaicon = function (raw) {
		var attrnames = ['offlineResource', 'downloadableDocument', 'AudioClip', 'VideoClip', 'Maori', 'Interactive', 'UserContributed', 'NZresource'];
		var icons = [];
		var iconimage = [];
		var addicons = [];
		icons['offlineResource'] = ['CD-ROM', 'DVD', 'Audiotape', 'Book', 'pamphlet', 'Poster', 'Resource kit'];
		addicons['offlineResource'] = false;
		iconimage['offlineResource'] = '<img title="Offline resource" class="search-icon" src="http://www.tki.org.nz/extension/tki-portal/design/tki-portal/images/icons/search-offline-icon.gif" alt="Offline resource icon" width="18" height="18" />';
		icons['downloadableDocument'] = ['msExcel', 'msPowerPoint', 'msWord', 'pdf', 'rtf', 'zip'];
		addicons['downloadableDocument'] = false;
		iconimage['downloadableDocument'] = '<img title="Downloadable document" class="search-icon" src="http://www.tki.org.nz/extension/tki-portal/design/tki-portal/images/icons/search-document-icon24.png" alt="Downloadable document icon" width="18" height="18" />';
		icons['AudioClip'] = ['audio clip'];
		addicons['AudioClip'] = false;
		iconimage['AudioClip'] = '<img title="Audio clip" class="search-icon" src="http://www.tki.org.nz/extension/tki-portal/design/tki-portal/images/icons/search-audio-icon.jpg" alt="Audio clip icon" title="Audio clip" width="18" height="18" />';
		icons['VideoClip'] = ['video clip'];
		addicons['VideoClip'] = false;
		iconimage['VideoClip'] = '<img title="Video clip" class="search-icon" src="http://www.tki.org.nz/extension/tki-portal/design/tki-portal/images/icons/search-video-clip-icon.gif" alt="Video clip icon" width="18" height="18" />';
		icons['Maori'] = ['mi'];
		addicons['Maori'] = false;
		iconimage['Maori'] = '<img title="M&#257;ori content" class="search-icon" src="http://www.tki.org.nz/extension/tki-portal/design/tki-portal/images/icons/search-maori-content-icon.gif" alt="M&#257;ori content icon" width="18" height="18" />';
		icons['Interactive'] = ['Interactive resource'];
		addicons['Interactive'] = false;
		iconimage['Interactive'] = '<img title="Interactive resource" class="search-icon" src="http://www.tki.org.nz/extension/tki-portal/design/tki-portal/images/icons/search-interactive-content-icon.gif" alt="Interactive resource icon" width="18" height="18" />';
		icons['UserContributed'] = ['Social software'];
		addicons['UserContributed'] = false;
		iconimage['UserContributed'] = '<img title="User contributed material" class="search-icon" src="http://www.tki.org.nz/extension/tki-portal/design/tki-portal/images/icons/search-user-icon.gif" alt="User contributed material icon" width="18" height="18" />';
		addicons['NZresource'] = false;
		iconimage['NZresource'] = '<img title="New Zealand resource" class="search-icon" src="http://www.tki.org.nz/extension/tki-portal/design/tki-portal/images/icons/search-nz-icon.gif" alt="New Zealand resource icon" width="18" height="18" />';
		
		var output = "";
		if(isset(raw.dc_right) && jQuery.trim(raw.dc_right).toLowerCase() == 'ministry of education, new zealand')
			output += '<img title="Commissioned by Ministry of Education, New Zealand" class="search-icon" src="http://www.tki.org.nz/extension/tki-portal/design/tki-portal/images/icons/search-minedu-icon.gif" alt="Commissioned by Ministry of Education, New Zealand icon" width="18" height="18" />';
		if(isset(raw.contenttype))	
			jQuery.each(raw.contenttype, function(index, format) { 		
				if(jQuery.inArray(format, icons['offlineResource']) != -1)
					addicons['offlineResource'] = true;
				if(jQuery.inArray(format, icons['downloadableDocument']) != -1)
					addicons['downloadableDocument'] = true;
				if(jQuery.inArray(format, icons['AudioClip']) != -1)
					addicons['AudioClip'] = true;
				if(jQuery.inArray(format, icons['VideoClip']) != -1)
					addicons['VideoClip'] = true;
			});
		if(isset(raw.language))
			jQuery.each(raw.language, function(index, format) { 		
				if(jQuery.inArray(format, icons['Maori']) != -1)
					addicons['Maori'] = true;
			});
		if(isset(raw.dc_type))
			jQuery.each(raw.dc_type, function(index, format) { 		
				if(jQuery.inArray(format, icons['Interactive']) != -1)
					addicons['Interactive'] = true;
				if(jQuery.inArray(format, icons['UserContributed']) != -1)
					addicons['UserContributed'] = true;
			});
		if(isset(raw.url) && raw.url.toString().indexOf('.nz') != -1)
			addicons['NZresource'] = true;
		jQuery.each(attrnames, function(index,format) { 
			if(addicons[format]){	
				output += iconimage[format];
			}
		});
		return output;
	};

})(jQuery);

