jQuery(document).ready(function(){
   	//bind submit event
	jQuery('.sbbssearchform').each(function (i) {
        		jQuery('.sbbssearchsubmit',jQuery(this)).click(function(e){
			e.preventDefault();
			sbbsSearch_ajaxSearch(jQuery(this).parents('.sbbssearchform'));
		});
      });
	sbbsSearch_RedirectedSearch();
 });
function sbbsSearch_RedirectedSearch()
{
	var oQS = new Object();
	window.location.search.replace( new RegExp( "([^?=&]+)(=([^&]*))?", "g" ),	function( $0, $1, $2, $3 ) { oQS[ $1 ] = $3; } );
	if(oQS==undefined)return;
	var searchText = oQS['dtSearchText'];
	if(searchText == undefined || searchText.length == 0)
	{
		searchText = oQS['zoom_query'];
	}
	
	searchText = URLDecode(searchText);
	var mainForm = oQS['elid'];
	if(mainForm == undefined || mainForm.length == 0)
	{
		mainForm = 'dtSearchMainForm';
	}
	
	var fromForm = oQS['elidfrom'];
	if(searchText != undefined && searchText.length > 0 && mainForm.length > 0)
	{
		jForm = jQuery('#' + mainForm);
		if(jForm.length > 0)
		{
			jQuery('.sbbssearchsearchtext',jForm).val(searchText);
			jQuery('.sbbssearchsubmit',jForm).trigger('click');
		}	
	}
}
function sbbsSearch_ajaxSearch(formContainer, page)
{	
	if(page==undefined) page = 1;
	jForm = jQuery(formContainer);
	containerId = jQuery('.resulttarget',jForm).val();
	var searchtext = jQuery('.sbbssearchsearchtext',jForm).val();
	var searchurl = jQuery('.searchurl',jForm).val();	
	var mainSearchForm = jQuery('.mainSearchForm',jForm).val();	
	//var umbid= jQuery('.sbbssearchsumbid',jForm).val();
	var paginationContainerId = jQuery('.paginationContainerId',jForm).val();	
	if(searchtext.length > 0)
	{
	var querystring = '?dtSearchText=' + escape(searchtext) + '&page=' + page
	if(mainSearchForm == window.location.pathname)
	{
		if(jQuery('#' + containerId).length > 0)
		{
			jResultContainer = jQuery('#' + containerId);
			jResultContainer.load(searchurl + querystring, {test:1}, function(){
			replaceEncodingProblem(jResultContainer);
			var paginationContainer = jQuery('#' + paginationContainerId);
				
			if(paginationContainer.length > 0)
			{	
				jResultContainer.children('ol').stop();
				var numberOfHits = jQuery('.numberOfHits',jResultContainer).val();	
				var searchItemsPerPage = jQuery('.searchItemsPerPage',jResultContainer).val();	
				var currentPageNumber = jQuery('.currentPageNumber',jResultContainer).val();
				var numberOfPages = Math.ceil(numberOfHits/searchItemsPerPage);	
				var querystringPagination = '?numberOfPages=' + numberOfPages  + '&currentPageNumber=' + currentPageNumber;
				paginationContainer.load(searchurl.replace('.aspx','/dtSearchPagination.aspx')+querystringPagination, {test:1}, function(){
					jQuery('li',paginationContainer).click(function(e){
						if(!jQuery(this).hasClass('current'))
						{
							if(jQuery(this).hasClass('first'))
							{
								sbbsSearch_ajaxSearch(formContainer, 1)
							}
							else if(jQuery(this).hasClass('last'))
							{
								sbbsSearch_ajaxSearch(formContainer, numberOfPages)
							}
							else if(jQuery(this).hasClass('previous'))
							{
								sbbsSearch_ajaxSearch(formContainer, (currentPageNumber * 1) - 1)
							}
							else if(jQuery(this).hasClass('next'))
							{
								sbbsSearch_ajaxSearch(formContainer, (currentPageNumber * 1) + 1)
							}
							else
							{
								sbbsSearch_ajaxSearch(formContainer, jQuery(this).html())
							}
						}
					});
				});
			}
			});
			jResultContainer.children('ol').fadeOut('fast')
		}
	}
	else
	{
		var mainFormElementId = jQuery('.mainSearchFormElementId',jForm).val();
		querystring = '?dtSearchText=' + searchtext + '&elid=' + mainFormElementId + '&elidfrom=' + jForm.attr('id');
		window.location = mainSearchForm + querystring
	}
	}
}

function replaceEncodingProblem(element)
{
	
	if(element == null) return;
	jEl = jQuery(element);
	//dtSearch problem with international characters in pdf meta (not in pdf content)
	//unicode hex values taken from http://www.acc.umu.se/~saasha/charsets/

	//alert(jEl.html().indexOf(problemChars[i]))
	
	var problemChars = new Array();
	var htmlEncoding = new Array();
	//Ö=Ã?
	problemChars[0] = "\u00c3\u003f";
	htmlEncoding[0] = "&Ouml;";		
	//å=Ã¥
	problemChars[1] = '\u00c3\u00a5';
	htmlEncoding[1] = "&aring;";	
	//ä=Ã¤
	problemChars[2] = "\u00c3\u00a4";
	htmlEncoding[2] = "&auml;";	
	//ö=Ã¶
	problemChars[3] = "\u00c3\u00b6";
	htmlEncoding[3] = "&ouml;";
	//é=Ã©
	problemChars[4] = "\u00c3\u00a9";
	htmlEncoding[4] = "&egrave;";		
	
	for(i=0;i<problemChars.length;i++)
	{
		//replaceEncodingProblemDo(element,problemChars[i],htmlEncoding[i]);
		while(jEl.html().indexOf(problemChars[i]) > 0)
		{
			jEl.html(jEl.html().replace(problemChars[i],htmlEncoding[i]));
		}
	}
}
function replaceEncodingProblemDo(element,from,to)
{
	jEl = jQuery(element);

	while(jEl.html().indexOf(from) > 0)
		{
			jEl.html(jEl.html().replace(from,to));
		}
}
function URLDecode (encodedString) {
  var output = encodedString;
  var binVal, thisString;
  var myregexp = /(%[^%]{2})/;
  while ((match = myregexp.exec(output)) != null
             && match.length > 1
             && match[1] != '') {
    binVal = parseInt(match[1].substr(1),16);
    thisString = String.fromCharCode(binVal);
    output = output.replace(match[1], thisString);
  }
  return output;
}
function URLEncode (clearString) {
  var output = '';
  var x = 0;
  clearString = clearString.toString();
  var regex = /(^[a-zA-Z0-9_.]*)/;
  while (x < clearString.length) {
    var match = regex.exec(clearString.substr(x));
    if (match != null && match.length > 1 && match[1] != '') {
    	output += match[1];
      x += match[1].length;
    } else {
      if (clearString[x] == ' ')
        output += '+';
      else {
        var charCode = clearString.charCodeAt(x);
        var hexVal = charCode.toString(16);
        output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase();
      }
      x++;
    }
  }
  return output;
}
