// Implement a trim function...
String.prototype.trim = function() {
	// skip leading and trailing whitespace
	// and return everything in between
	var x=this;
	x=x.replace(/^\s*(.*)/, "$1");
	x=x.replace(/(.*?)\s*$/, "$1");
	return x;
}

function checkTheForm(theForm){
	if(!checkTheLength(theForm.thestring)||!checkTooManyClauses(theForm.thestring)||!checkDate(theForm.from,theForm.to)){
		return false;
	}else{
		theForm.querystring.value=replaceChar(theForm.thestring);
		theForm.querystringstriped.value = theForm.querystring.value;
		// add the categorysearch to the querystring
		/*
		if (theForm.categoryid) {
			var catval = theForm.categoryid.options[theForm.categoryid.selectedIndex].value;
			if (catval > 0) theForm.querystring.value = "category: " + catval + " " + theForm.querystring.value;
		}
		*/
		return true;
	}
}

//checks small search form, found in left column at different pages on site	
function checkSmallForm(theForm){
	if(!checkTheLength(theForm.thestring)||!checkTooManyClauses(theForm.thestring)){
		return false;
	}else{
		theForm.articlequerystring.value=replaceChar(theForm.thestring);
		//theForm.querystringstriped.value = theForm.articlequerystring.value;
		return true;
	}
}


//checks small link search form, found in left column at index pages
function checkSmallLinkForm(theForm){

		theForm.querystring.value=replaceChar(theForm.thestring);
		return true;
}

//checks link search form	
function checkLinkForm(theForm){

	theForm.querystring.value=replaceChar(theForm.thestring);
	theForm.querystringstriped.value = theForm.querystring.value;

	// check the categorysearch
	if (theForm.category) {
		var catval = theForm.category.options[theForm.category.selectedIndex].value;
		if (catval <= 0){
			alert("Välj kategori!");
			return false;		
		} else {
			theForm.querystring.value = "category: " + catval + " " + theForm.querystring.value;
		}
	}
	return true;
}

function replaceChar(theField){
	tmp=theField.value;
	var newstring = "";
	for(i=0; i<tmp.length;i++){
		if(tmp.charAt(i)=='+'){
			newstring += '%2B';
		}else if(tmp.charAt(i)=='"'){
			newstring += '%22';
		}else{
			newstring += tmp.charAt(i);
		}
	}
	return newstring;
}

function checkTooManyClauses(theField){
	if(theField.value.length==2 && theField.value.charAt(1)=='*'){
		alert("Sökningen ger för många träffar!");
		theField.focus();
		return false;
	}else{
		return true;
	}
}

function checkTheLength(theField){
	var q = theField.value.trim();
	if (q.length < 2){
		alert("Du måste ange ett sökuttryck på minst två bokstäver.");
		theField.focus();
		return false;
	}else{
		return true;
	}
}

function checkDate(from,to) {
	if (from.value.length > 0) {
		if (from.value.length != 10 && from.value.lastIndexOf("-") != 7) {
			alert('Datumet måste vara i formatet: åååå-MM-dd, ex: 2004-10-19!');
			from.focus();
			from.select();
			return false;
		}
	}
	if (to.value.length > 0) {
		if (to.value.length != 10 && to.value.lastIndexOf("-") != 7) {
			alert('Datumet måste vara i formatet: åååå-MM-dd, ex: 2004-10-19!');
			to.focus();
			to.select();
			return false;
		}
	}
	
	return true;
}

function next(){
	postForm(document.nextform);
}

function prev(){
	postForm(document.prevform);
}

function page(num){
	document.pageform.page.value=num;
	postForm(document.pageform);
}

function thesearchform(){
	postForm(document.thesearchform);
}

function advancedsearchform(){
	postForm(document.advancedsearchform);
}

function changeOrder(theOrder){
	document.sortorderChange.order.value=theOrder;
	postForm(document.sortorderChange);
}

function postForm(theForm){
	theForm.submit();
}

function move(pagenum){
	document.moveform.page.value=pagenum;
	postForm(document.moveform);

}

function checkIndexForm() {
	
	var selection = document.indexform.categorybox;
	var category_list = ""; 
	
	for (var i = 0; i < selection.length; i++) {
			
		if (selection[i].checked) {
	
			category_list += selection[i].value;
			category_list += "-";
			
		}
	}
	category_list = category_list.substring(0,category_list.length-1);
	if (category_list != "") {
		document.indexform.categoryid.value=category_list;
	} else {
		for (var i = 0; i < selection.length; i++) {
			
			category_list += selection[i].value;
			category_list += "-";
		
		}
		category_list = category_list.substring(0,category_list.length-1);
		document.indexform.categoryid.value=category_list;
	}
	document.indexform.querystring.value=replaceChar(document.indexform.thestring);
	document.indexform.querystringstriped.value = document.indexform.querystring.value;
	return true;
}

// Advanced search functions
function checkAdvSearchForm(theForm){
	if (!checkTheLength(theForm.querystr) || !checkTooManyClauses(theForm.querystr)) {
		return false;
	}
	else {
		var selection = document.getElementById('fs-0').getElementsByTagName('input');
		var search_categories = "";
		var category_list = ","; 
		
		for (var i = 0; i < selection.length; i++) {
			if (selection[i].checked) {
				search_categories += "indexarticle_categoryid:" + selection[i].value + " OR ";
				category_list += selection[i].value + ",";		
			}
		}
		
		if (search_categories != "") {
			var searchfunction = theForm.searchfunc.value;
			var searchstr = theForm.querystr.value.trim();
			if (searchfunction == "any") {
				searchstr = searchstr.replace(" ", " OR ");
			}
			else if (searchfunction == "all") {
				searchstr = searchstr.replace(" ", " AND ");
			}
			else if (searchfunction == "exact") {
				searchstr = '"' + searchstr + '"';
			}
			var articlequerystr = "(" + searchstr + ") AND (" + search_categories.substring(0, search_categories.lastIndexOf(" OR ")) + ")";
			theForm.articlequerystring.value = articlequerystr;
			theForm.categories.value = category_list;
			
			return true;
		}
	}
	return false;
}

function checkAll(ca) {
	var fs = ca.id.split('-')[1];
	var selection = document.getElementById('fs-'+fs).getElementsByTagName('input');
	
	for (i = 0; i < selection.length; i++) {
		selection[i].checked = ((ca.checked == true) ? true : false);
		
		/* if search in all */
		if (fs == '0') {
			selection[i].disabled = ((ca.checked == true) ? "disabled" : "");
		}
	}
}

function disableAll() {
	var selection = document.getElementById('fs-0').getElementsByTagName('input');
	for (i = 0; i < selection.length; i++) {
		selection[i].disabled = "disabled";
	}
}

function advSearchMove(pagenum){
	document.advSearchMoveForm.page.value = pagenum;
	postForm(document.advSearchMoveForm);
}