/*	
	Google search functions are gathered here.
	2006-09-13, Martin Kjellqvist
	Extended/modified by Jimi Hullegård at Mogul
*/

/* Set the selected type as a required field */ 
function setTopTypeSearch(f)
{
	f.requiredfields.value = f.google_type.value;
}

/* 
	Add all values from select boxes to a required field value 
	This function is used from all multiple values search.
*/
function setRequiredFields(f)
{
	// required fields
	if (f.google_type != null)
	{
		var temp = "";
		if (f.google_type.type == "select-one")
		{
			if (f.google_type.selectedIndex > 0 || f.google_type.options[0].value.length > 0) {
				temp = f.google_type.options[f.google_type.selectedIndex].value;
			}
		}
		else
		{
			temp = f.google_type.value;
		}
		
		f.requiredfields.value = addToString(f.requiredfields.value, temp, ".");
	}

	// Add value from google_checkbox_ws to requiredfields, used by filtrera special
	
	if(f.google_ws_checkbox != null && f.google_ws_checkbox.checked)
	{
		f.requiredfields.value = addToString(f.requiredfields.value, f.google_ws_checkbox.value, ".");
	}
	
	// Add value from google_checkbox_ws to requiredfields, used by filtrera gennerall

	if(f.google_ws_hidden != null)
	{
		f.requiredfields.value = addToString(f.requiredfields.value, f.google_ws_hidden.value, ".");
	}

	if (f.google_type_hidden != null)
	{
		f.requiredfields.value = addToString(f.requiredfields.value, f.google_type_hidden.value, ".");
	}

	if (f.google_subject != null   )
	{
		if (f.google_subject.selectedIndex > 0) 
		{
			f.requiredfields.value = addToString(f.requiredfields.value, f.google_subject.options[f.google_subject.selectedIndex].value, ".");
			/*
			if (f.requiredfields.value.length > 0)
			{
				f.requiredfields.value = f.requiredfields.value + ".";
			}
			f.requiredfields.value = f.requiredfields.value + f.google_subject.options[f.google_subject.selectedIndex].value;
			*/
		}
	}

	if (f.google_updated != null)
	{
		if (f.google_updated.selectedIndex > 0)
		{
			f.requiredfields.value = addToString(f.requiredfields.value, f.google_updated.options[f.google_updated.selectedIndex].value, ".");
			/*
			if (f.requiredfields.value.length > 0)
			{
				f.requiredfields.value = f.requiredfields.value + ".";
			}
			f.requiredfields.value = f.requiredfields.value + f.google_updated.options[f.google_updated.selectedIndex].value;
			*/
		}
	}

	if (f.google_event != null)
	{
		if (f.google_event.selectedIndex > 0)
		{
			f.requiredfields.value = addToString(f.requiredfields.value, f.google_event.options[f.google_event.selectedIndex].value, ".");
			/*
			if (f.requiredfields.value.length > 0)
			{
				f.requiredfields.value = f.requiredfields.value + ".";
			}
			f.requiredfields.value = f.requiredfields.value + f.google_event.options[f.google_event.selectedIndex].value;
			*/
		}
	}

	if (f.google_county != null)
	{
		if (f.google_county.selectedIndex > 0)
		{
            
			f.requiredfields.value = addToString(f.requiredfields.value, f.google_county.options[f.google_county.selectedIndex].value, ".");
			/*
			if (f.requiredfields.value.length > 0)
			{
				f.requiredfields.value = f.requiredfields.value + ".";
			}
			f.requiredfields.value = f.requiredfields.value + f.google_county.options[f.google_county.selectedIndex].value;
			*/
		}
	}

	// Partial fields
	if (f.google_section != null)
	{
		var temp = "";
		if (f.google_section.type == "select-one")
		{
			if (f.google_section.selectedIndex > 0 || f.google_section.options[0].value.length > 0) {
				temp = f.google_section.options[f.google_section.selectedIndex].value;
			}
		}
		else
		{
			temp = f.google_section.value;
		}
		
		f.partialfields.value = addToString(f.partialfields.value, temp, ".");
	}
	if (f.google_year != null)
	{
		if (f.google_year.selectedIndex > 0)
		{
			f.partialfields.value = addToString(f.partialfields.value, f.google_year.options[f.google_year.selectedIndex].value, ".");
			/*
			if (f.requiredfields.value.length > 0)
			{
				f.requiredfields.value = f.requiredfields.value + ".";
			}
			f.requiredfields.value = f.requiredfields.value + f.google_county.options[f.google_county.selectedIndex].value;
			*/
		}
	}
	if (f.google_person != null)
	{
		if (f.google_person.selectedIndex > 0)
		{
			f.partialfields.value = addToString(f.partialfields.value, f.google_person.options[f.google_person.selectedIndex].value, ".");
			/*
			if (f.partialfields.value.length > 0)
			{
				f.partialfields.value = f.partialfields.value + ".";
			}
			f.partialfields.value = f.google_person.options[f.google_person.selectedIndex].value;
			*/
		}
	}
	if (f.google_subsection != null && f.google_subsection.value != '')
	{
		f.partialfields.value = addToString(f.partialfields.value, f.google_subsection.value, ".");
	}
	if (f.google_region != null)
	{
		if (f.google_region.selectedIndex >= 0)
		{
			f.partialfields.value = addToString(f.partialfields.value, f.google_region.options[f.google_region.selectedIndex].value, ".");
			/*
			if (f.partialfields.value.length > 0)
			{
				f.partialfields.value = f.partialfields.value + ".";
			}
			f.partialfields.value = f.partialfields.value + f.google_region.options[f.google_region.selectedIndex].value;
			*/
		}
	}
	if (f.google_eventholder != null)
	{
		if (f.google_eventholder.selectedIndex > 0)
		{
			f.partialfields.value = addToString(f.partialfields.value, f.google_eventholder.options[f.google_eventholder.selectedIndex].value, ".");
			/*
			if (f.partialfields.value.length > 0)
			{
				f.partialfields.value = f.partialfields.value + ".";
			}
			f.partialfields.value = f.partialfields.value + f.google_eventholder.options[f.google_eventholder.selectedIndex].value;
			*/
		}
	}
    
    if (f.google_map_county != null)
	{
		if (f.google_map_county.selectedIndex > 0)
		{
            
			f.partialfields.value = addToString(f.partialfields.value, f.google_map_county.options[f.google_map_county.selectedIndex].value, ".");
			/*
			if (f.partialfields.value.length > 0)
			{
				f.partialfields.value = f.partialfields.value + ".";
			}
			f.partialfields.value = f.partialfields.value + f.google_eventholder.options[f.google_eventholder.selectedIndex].value;
			*/
		}
	}
    
    
	if (f.google_url != null)
	{
		f.partialfields.value = addToString(f.partialfields.value, f.google_url.value, ".");
		/*
		if (f.partialfields.value.length > 0)
		{
			f.partialfields.value = f.partialfields.value + "." + f.google_url.value;
		}
		else
		{
			f.partialfields.value = f.google_url.value;
		}
		*/
	}

	
}

function setWorkerNameField(f)
{
	if (f.nameQuery != null && f.nameQuery.value.length > 0)
	{
		var array = f.nameQuery.value.split(' ');
		if (f.partialfields.value.length > 0)
		{
			f.partialfields.value = f.partialfields.value + ".";
		}
		for (var i = 0; i < array.length; i++)
		{
			f.partialfields.value = f.partialfields.value + "profileName:" + URLEncode(array[i]);
			if (i < (array.length - 1))
			{
				f.partialfields.value = f.partialfields.value + ".";
			}
		}
	}
}

function setExtraRequiredFields(f)
{
	if (f.extraRequiredFields != null && f.extraRequiredFields.value.length > 0)
	{
		f.requiredfields.value = addToString(f.requiredfields.value, f.extraRequiredFields.value, ".");
	}
}

/* This method will hide/show the event year option box */
function changeEventTime(divID, yearObj) {
	var divObj = document.getElementById(divID);
	if (divObj.style.display == 'block' && yearObj.selectedIndex == 0) {
		divObj.style.display = 'none';
	} else if (divObj.style.display == 'none' && yearObj.selectedIndex > 0) {
		divObj.style.display = 'block';
	}
}

function setHiddenEvents(f)
{
	if (f.currentEvent != null)
	{
		f.requiredfields.value = addToString(f.requiredfields.value, f.currentEvent.value, ".");
	}
	
	// Set correct date search
	if (f.google_eventmonth != null && f.google_eventmonth.selectedIndex == 0)
	{
		f.requiredfields.value = addToString(f.requiredfields.value, f.google_eventmonth.options[f.google_eventmonth.selectedIndex].value, ".");
	}
	else if (f.google_eventmonth != null && f.google_eventyear != null)
	{
		if (f.google_eventyear.selectedIndex == 0)
		{
			// Only use the month in the search;
			//f.partialfields.value = f.partialfields.value + "startDate:" + f.google_eventmonth.options[f.google_eventmonth.selectedIndex].value;
			f.partialfields.value = addToString(f.partialfields.value, f.google_eventmonth.options[f.google_eventmonth.selectedIndex].value, ".");
		}
		else
		{
			// Use year as well in the search
			//f.partialfields.value = f.partialfields.value + "startDate:" + f.google_eventyear.options[f.google_eventyear.selectedIndex].value + f.google_eventmonth.options[f.google_eventmonth.selectedIndex].value;
			f.partialfields.value = addToString(f.partialfields.value, f.google_eventyear.options[f.google_eventyear.selectedIndex].value + "." + f.google_eventmonth.options[f.google_eventmonth.selectedIndex].value, ".");
		}
	}
}

function addToString(originalString, stringToAdd, stringInBetween)
{
	if (originalString == null || originalString.length == 0)
	{
		return stringToAdd;
	}
	if (stringToAdd == null || stringToAdd.length == 0 || originalString.indexOf(stringToAdd) != -1)
	{
		return originalString;
	}
	if (stringInBetween == null)
	{
		return originalString + stringToAdd;
	}
	return originalString + stringInBetween + stringToAdd;
}

// ====================================================================
//  	Function URLEncode
//		Based on code from:
// http://www.albionresearch.com/
// ====================================================================
function URLEncode(string)
{
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

	var plaintext = string;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	}

	return encoded;
};
