var xmlHttp;
//New stuff begin
var hashIndex = 0;
var timerCookie;
var myArray = [];
presIndex=1000000;
window.onload=function() {onLoad()};
window.onunload=function() {onUnload()};
//New stuff end

function stateChanged() { 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		document.getElementById("txtContent").innerHTML=xmlHttp.responseText;
	}
}

function searchChanged() { 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") {
		document.getElementById("txtSearch").innerHTML=xmlHttp.responseText;
	}
}

function GetXmlHttpObject() {
	var xmlHttp=null;
	try
	 {
	 // Firefox, Opera 8.0+, Safari
	 xmlHttp=new XMLHttpRequest();
	 }
	catch (e)
	 {
	 //Internet Explorer
	 try
	  {
	  xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
	  }
	 catch (e)
	  {
	  xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	  }
	}
	return xmlHttp;
}

function korning(scope, action, query, startrecord, lang, sorting, sortorder, maximum_records, hide_search) {
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp==null) {
		alert ("Browser does not support HTTP Request");
	 	return;
	}
	var url="index.php?eID=tx_ajaxlup_pi1";
	url=url+"&scope="+scope;
	url=url+"&action="+action;
	url=url+"&query="+query;
	url=url+"&startrecord="+startrecord;
	url=url+"&lang="+lang;
	url=url+"&sorting="+sorting;
	url=url+"&sortorder="+sortorder;
	url=url+"&maximum_records="+maximum_records;
	url=url+"&hide_search="+hide_search;
	url=url+"&sid="+Math.random();
	//alert(url);
	
	if(action=="avanceradSokruta" || action=="enkelSokruta") {
		//alert(action);
		xmlHttp.onreadystatechange=searchChanged;
	} else {
		xmlHttp.onreadystatechange=stateChanged;
	}
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function exportDo(scope, action, query, startrecord, lang, sorting, sortorder, maximum_records, hide_search) {
	
	action="exportDo";
	
	var elements = document.tx_ajax_lup_form.elements;
	for (i=0;i<elements.length;i++) {
		if(elements[i].checked && elements[i].name == "rblExportFormat") var checkboxes = elements[i].value;
	}
	
	var checkboxes = 0;
	var rvalue = "";
	var cvalue = "";
	var lextra = "";
	
	for (var i = 0; i < document.tx_ajax_lup_form.rblExportFormat.length; i++) {
			if(document.tx_ajax_lup_form.rblExportFormat[i].checked) {
				rvalue = document.tx_ajax_lup_form.rblExportFormat[i].value;
				checkboxes = document.getElementsByName(rvalue);
			}
	}
	for (var i = 0; i < checkboxes.length; i++) {
			if(cvalue) cvalue += ",";
			if(checkboxes[i].checked) cvalue += checkboxes[i].value;
	}
	if(rvalue=="cblLabels") lextra = document.getElementById("txtLabelExtra").value;
	if(rvalue=="cblPdfList") lextra = document.getElementById("txtHeader").value;
	
	var from = document.getElementById("tx_ajax_lup_from").value;
	var to = document.getElementById("tx_ajax_lup_to").value;
	
	var url="index.php?eID=tx_ajaxlup_pi1";
	url=url+"&scope="+scope;
	url=url+"&action="+action;
	url=url+"&query="+query;
	url=url+"&startrecord="+startrecord;
	url=url+"&lang="+lang;
	url=url+"&sorting="+sorting;
	url=url+"&sortorder="+sortorder;
	url=url+"&maximum_records="+maximum_records;
	url=url+"&hide_search="+hide_search;
	url=url+"&year="+from+"-"+to;
	url=url+"&rvalue="+rvalue;
	url=url+"&sid="+Math.random();
	//alert(url);

	var newwindow = window.open(url,'dok','height=700,width=700,scrollbars=yes, status=no');
	if (window.focus) {newwindow.focus()}
}

function exportBibtex2(scope, action, query, startrecord, lang, sorting, sortorder, maximum_records, hide_search, selObj)
{	
	if(action != "exportBibtex" && action!="rssfeed") {
		var rvalue = selObj.options[selObj.selectedIndex].value;
		if(!rvalue) return false;
		if(rvalue=="exportBibtex") action = "exportBibtex";
	}
	
	/* var title = document.getElementById("title").value;
	var keyword = document.getElementById("keyword").value;
	var author = document.getElementById("author").value;
	var publishingYear = document.getElementById("publishingYear").value;
	var publicationIdentifier = document.getElementById("publicationIdentifier").value;
	var department = document.getElementById("department");
	var myDepartment = department.options[department.selectedIndex].value;
	var language = document.getElementById("language");
	var myLanguage = language.options[language.selectedIndex].value;
	var documentType = document.getElementById("documentType");
	var myDocumentType = documentType.options[documentType.selectedIndex].value;
	query += title.replace("$","") + "$";
	query += keyword.replace("$","") + "$";
	query += author.replace("$","") + "$";
	query += publishingYear.replace("$","") + "$";
	query += publicationIdentifier.replace("$","") + "$";
	query += myDepartment.replace("$","") + "$";
	query += myLanguage.replace("$","") + "$";
	query += myDocumentType.replace("$",""); */
	
	var url="index.php?eID=tx_ajaxlup_pi1";
	url=url+"&scope="+scope;
	url=url+"&action="+action;
	url=url+"&query="+query;
	url=url+"&startrecord="+startrecord;
	url=url+"&lang="+lang;
	url=url+"&sorting="+sorting;
	url=url+"&sortorder="+sortorder;
	url=url+"&maximum_records="+maximum_records;
	url=url+"&hide_search="+hide_search;
	url=url+"&rvalue="+rvalue;
	url=url+"&sid="+Math.random();
	//alert(url);

	var newwindow = window.open(url,'dok','height=700,width=700,scrollbars=yes, status=no');
	if (window.focus) {newwindow.focus()}
}

//New stuff begin
function onLoad() {
	// this doesn't help, Opera is currently broken:
	if (window.opera && window.history) {
		history.navigationMode = 'compatible';
	}
	// Set-up the polling:
	timerCookie = window.setTimeout(onTick, 200);
}

function onTick() {
	
	timerCookie = null;
	myVar = document.location.hash.replace("#","");
	//document.getElementById("debug").innerHTML = hashIndex + "; " + myVar + '; ' + presIndex;
	//alert(hashIndex + "; " + myVar + '; ' + presIndex);
	// && presIndex != myVar
	//document.getElementById("currentHash").innerHTML = (myVar+";"+hashIndex || "null");
	timerCookie = window.setTimeout(onTick, 200);
	if(hashIndex-myVar > 1) {
		hashIndex--;
		var korArray = myArray[myVar].split(';');
		korning(korArray[0],korArray[1],korArray[2],korArray[3],korArray[4],korArray[5],korArray[6],korArray[7],korArray[8]);
		//presIndex = 1000000;
	}
}
 
function onUnload() {
	if (timerCookie) {
		window.clearTimeout(timerCookie);
	}
}

function onFrameLoaded(hash) {
	location.hash = hash;
}

function lista(scope, action, query, startrecord, lang, sorting, sortorder, maximum_records, hide_search) {
	//alert(scope+ '; ' + action+ '; ' + query+ '; ' + startrecord+ '; ' + lang+ '; ' + sorting+ '; ' + sortorder+ '; ' + maximum_records+ '; ' + hide_search);
	if(action == "search" && !document.getElementById("searchbox")) {
		
		//Avancerad sökning		
		var type = "";
		var elements = document.tx_ajax_lup_form.elements;
		var meArray = new Array();
		for (i = 0; i < elements.length; i++) {
			type = elements[i].type;
			if(type == "text" || type == "select-one") {
				if(elements[i].value != "") {
					meArray[i] = elements[i].value;
				}
			}
		}
		var title = document.getElementById("title").value;
		var keyword = document.getElementById("keyword").value;
		var author = document.getElementById("author").value;
		var publishingYear = document.getElementById("publishingYear").value;
		var publicationIdentifier = document.getElementById("publicationIdentifier").value;
		var department = document.getElementById("department");
		var myDepartment = department.options[department.selectedIndex].value;
		var language = document.getElementById("language");
		var myLanguage = language.options[language.selectedIndex].value;
		var documentType = document.getElementById("documentType");
		var myDocumentType = documentType.options[documentType.selectedIndex].value;
		query += title.replace("$","") + "$";
		query += keyword.replace("$","") + "$";
		query += author.replace("$","") + "$";
		query += publishingYear.replace("$","") + "$";
		query += publicationIdentifier.replace("$","") + "$";
		query += myDepartment.replace("$","") + "$";
		query += myLanguage.replace("$","") + "$";
		query += myDocumentType.replace("$","");
		action = "advancedSearch";
		//scope = document.getElementById("scopeList").value;
	} else if(action == "search" && document.getElementById("searchbox")) {
		//enkel sökning
		scope = document.getElementById("scopeList").value;
		query = document.getElementById("searchbox").value;
		//alert(query);
	} else if(action=="avanceradSokruta") {
		var strLegend = "";
		if(lang=="se") {
			strLegend = "Avancerad sökning";
		} else {
			strLegend = "Advanced search";
		}
		document.getElementById("lblSearch").innerHTML = strLegend;
		/*var minSokruta = document.getElementsByName('choice');
		for (i=0;i<minSokruta.length;i++) {
			
			if(minSokruta[i].value==action) {
				minSokruta[i].checked=true;
			}
		}*/
	} else if(action=="enkelSokruta") {
		var strLegend = "";
		if(lang=="se") {
			strLegend = "Enkel sökning";
		} else {
			strLegend = "Simple search";
		}
		document.getElementById("lblSearch").innerHTML = strLegend;
	}
	
	var errorSearch = "Ange ett sökvärde!";
	if(lang=="en") errorSearch = "Enter a search criteria!";
	if((!trim(query) || query=="Sök här" || query=="Search here" || trim(query.substr(0,5))=="$$$$$") && (action=="search" || action=="advancedSearch")) {
		alert(errorSearch);
		return false;
	}
	
	if(action != "enkelSokruta" && action != "avanceradSokruta") {
		document.getElementById("txtContent").innerHTML = '<img style="margin-left:150px;margin-top:50px; margin-right:10px;" src="/typo3conf/ext/ajax_lup/pi1/res/ajax-loader.gif" border="0" />Please wait!';
	}

	myArray[hashIndex] = scope + ';' + action + ';' +  query + ';' +  startrecord + ';' +  lang + ';' +  sorting + ';' +  sortorder + ';' +  maximum_records + ';' +  hide_search;
	korning(scope, action, query, startrecord, lang, sorting, sortorder, maximum_records, hide_search);
	
	if(navigator.userAgent.indexOf('MSIE') >= 0 && navigator.userAgent.indexOf('MSIE 8') < 0) {
		window.location.hash = hashIndex;
		var doc = document.getElementById("historyFrame").contentWindow.document;
		doc.open("javascript:'<html></html>'");
		doc.write("<html><head><scri" + "pt type=\"text/javascript\">parent.onFrameLoaded("+ (hashIndex++) + ");</scri" + "pt></head><body></body></html>");
		doc.close();
	} else {
		window.location.hash = hashIndex++;
	}
	return false;
}

// This function is for stripping leading and trailing spaces
function trim(str) {     
	if (str != null) {        
		var i;
		for (i=0; i<str.length; i++) {
			if (str.charAt(i)!=" ") {      
				str=str.substring(i,str.length);
       			break;
   			}
		}    
		for (i=str.length-1; i>=0; i--) {
			if (str.charAt(i)!=" ") {       
				str=str.substring(0,i+1);
        		break;
   			}
		}        
		if (str.charAt(0)==" ") {   
			return "";
		} else {   
			return str;
		}    
	}
}

function listitem_mouseOver(tagname) {
	divtag = document.getElementById(tagname);
	divtag.className = "lup_listitem_mouseover";
}

function listitem_mouseOut(tagname) {
	divtag = document.getElementById(tagname);
	divtag.className = "lup_listitem_normal";
}

function exportBibtex() {
	var checkedValues = "";
	for (var i = 0; i < document.tx_ajax_lup_form.bibBox.length; i++) {
		if (document.tx_ajax_lup_form.bibBox[i].checked) {
			if(checkedValues) checkedValues += ",";
      		checkedValues += document.tx_ajax_lup_form.bibBox[i].value;
   		}
	}
	
	var maximum_records = document.getElementById("maximum_records");
	var myMaximum_records = maximum_records.options[maximum_records.selectedIndex].value;

	if(checkedValues) {
		window.open('/typo3conf/ext/ajax_lup/pi1/bibtex.php?id=' + checkedValues + '&maximum_records=' + myMaximum_records,'Bibtex_export','width=600,height=700,scrollbars=yes');
	}
}

function checkAll(checked) {
	
	if(checked) {
		for (var i = 0; i < document.tx_ajax_lup_form.bibBox.length; i++) {
			document.tx_ajax_lup_form.bibBox[i].checked = true;
		}
	} else {
		for (var i = 0; i < document.tx_ajax_lup_form.bibBox.length; i++) {
			document.tx_ajax_lup_form.bibBox[i].checked = false;
		}		
	}
}
