(Search = {
	viewingResultURL: null,
	searchRequestURL: null,
	currentPage: 1,
	resultsPerPage: 6,
	resultTemplate: null,
	resultList: [],
	buildResultItem: function(item){
		if (this.resultTemplate==null) this.resultTemplate = $('#result-template').html();
        var data = unescape(this.resultTemplate);
        for (var prop in item){
        	data = data.replace('%{'+prop+'}', item[prop]);
    	}
    	return data;
	},
	buildResultList: function(){
		var container = $('#search-results').html(''),
			start = this.resultsPerPage * (this.currentPage-1),
			pages = Math.ceil(this.resultList.length/this.resultsPerPage);
		$('#result-items').text(this.resultList.length);
		for (var i=start,len=start+this.resultsPerPage;i<len&&i<this.resultList.length;i++){
			$(container).append(this.buildResultItem(this.resultList[i]));
		}
		if (start>0) $('div.page-box div.button-arrow-left').addClass('button-arrow-left-active');
		else $('div.page-box div.button-arrow-left').removeClass('button-arrow-left-active');
		if (start+this.resultsPerPage<this.resultList.length) $('div.page-box div.button-arrow-right').addClass('button-arrow-right-active');
		else $('div.page-box div.button-arrow-right').removeClass('button-arrow-right-active');
		$('div.pages').find('a.page.active').removeClass('active');
		$($('div.pages').find('a.page').get(this.currentPage-1)).addClass('active');
		$('div.pages').find('span').each(function(i,e){
			if (i+1<pages) $(e).removeClass('hide');
			else $(e).addClass('hide');
		});
		$('#search-popup-wrapper').removeClass('wait');
		$(document).progressBars();
	},
	showURL: function(url){
		if (!(url.indexOf("get") >= 0)){
			$("#page-content").load(url+" #page-content>*", function(){
				var query = $('form[name=search_popup]').find('input[name=query]').attr('value');
				$('form[name=search]').find('input[name=query]').attr('value', query);
				Search.viewingResultURL = url;
				Initializer();
				self.focus();
			});
		}else{
			Popups.window(url,'DBVSearchPreview');
		}
		return false;
	},
	showPage: function(num){
		var pages = Math.ceil(this.resultList.length/this.resultsPerPage);
		if (num<1) num = 1;
		else if (num>pages) num = pages;
		this.currentPage = num;
		this.buildResultList();

	},
	prevPage: function(){
		this.showPage(this.currentPage-1);
	},
	nextPage: function(){
		this.showPage(this.currentPage+1);
	},
	showSearchPopup: function(){
		$('#search-popup-wrapper').addClass('wait');
		$('#search-popup-wrapper').removeClass('hide');
		$('form[name=search_popup]').find('input[name=query]').focus();
		$('form[name=search_popup]').find('input[name=query]').blur();
		$(document).bind("click", Search.hideSearchPopup);
	},
	hideSearchPopup: function(){
		$('#search-popup-wrapper').addClass('hide');
		$(document).unbind("click", Search.hideSearchPopup);

		if (Search.viewingResultURL!=null) {
			location.href = Search.viewingResultURL + '?search=' + escape($('form[name=search_popup]').find('input[name=query]').attr('value'));
		}
	},
	commit: function(frm){
		var query = $(frm).find('input[name=query]'),
			scope = this;
		if (!$(query).attr('value')||$(query).attr('value')==$(query).attr('alt')){
			$(query).focus();
		} else {
			var val = $(query).attr('value');
			$('form[name=search]').find('input[name=query]').attr('value', val);
			$('form[name=search_popup]').find('input[name=query]').attr('value', val);
			var data = {};
			$(frm).find('input').each(function(i,e){
				if ($(e).attr('name')){
					if($(e).attr('name') == "query")
						data[$(e).attr('name')] = encodeURI($(e).attr('value') );
					else
						data[$(e).attr('name')] = $(e).attr('value');
				}
			});
			scope.searchRequestURL = $(frm).attr('action');
			$.post(scope.searchRequestURL, data, function(json){
				if (   typeof(json)=='object'
					&& typeof(json).length!='undefined') scope.resultList = json;
				else scope.resultList = [];
				scope.buildResultList();
			}, 'json');
			scope.showSearchPopup();
		}
	},
	getUrlParam: function(strParamName){
		strParamName = escape(unescape(strParamName));
		var returnVal = new Array();
		var qString = null;
		if (window.location.search.search(strParamName) > -1 ){
			qString = window.location.search.substr(1,window.location.search.length).split("&");
		}
		if (qString==null) return null;
		for (var i=0;i<qString.length; i++){
			if (escape(unescape(qString[i].split("=")[0])) == strParamName){
				returnVal.push(qString[i].split("=")[1]);
			}
		}
		if (returnVal.length==0) return null;
		else if (returnVal.length==1) return returnVal[0];
		else return returnVal;
	},
	initialize: function(){
		var scope = this;
		$(document).ready(function(){
			var query = Search.getUrlParam('search');
			$('input.search').each(function(i,e){
				if (query) e.value = unescape(query);
				var hint = e.getAttribute('alt');
				if (hint){
					if (!e.value) e.value = hint;
					$(e).focus(function(){
						if (e.value==hint) e.value = '';
					});
					$(e).blur(function(){
						if (!e.value) e.value = hint;
					});
				}
			});
			$('#search-popup-wrapper').find('.button-close').click(function(event){
				scope.hideSearchPopup();
				event.stopPropagation();
				return false;
			});
			$('#search-popup').click(function(event){
				event.stopPropagation();
				return false;
			});
			$('div.page-box div.button-arrow-left').click(function(){
				if ($(this).hasClass('button-arrow-left-active')) scope.prevPage();
			});
			$('div.page-box div.button-arrow-right').click(function(){
				if ($(this).hasClass('button-arrow-right-active')) scope.nextPage();
			});
		});
	}
}).initialize();