/*global OpenLayers, Fusion, sneMunicipalityConfig */
/*jslint bitwise: true, browser: true, eqeqeq: true, immed: true, newcap: true, nomen: true, regexp: true, undef: true, white: true, indent: 4*/

var findDrawings = function() {
  var url = "http://hekla.snertill.is/Hafnarfjordur_technical/web/teikningar/default.aspx?search_by_to=1";
  //window.open("http://hekla.snertill.is/Hafnarfjordur_technical/web/teikningar/default.aspx?search_by_to=1&search_address=erluhraun+2&search_landnumber=&x=0&y=0");
  var designer,type,landnr,tenginr,address;

  //tenginr = document.getElementsByName("search_tenginr")[0].value;
  address = document.getElementsByName("search_address")[0].value;
  address = address.replace(/ /, "+");

  url += "&search_address=" + encodeURIComponent(address);
  url += "&search_tenginr=" + tenginr;

  //designer = document.getElementsByName("search_designer")[0].value;
  //type = document.getElementsByName("search_type")[0].value;
  //url += "&search_type=" + type; // Not working at the moment.
  //url += "&search_designer=" + designer; // Not working either at the moment
  //url += "&search_landnr=" + landnr;


  window.open(url);
}

/* Commented out by Ari Þórðarson on 9/12/2008 */
/*
var findPropertyPapers = function() {
  var errorMessage = document.getElementById("ErrorMessageDrawings");
  errorMessage.innerHTML = "This has not been implemented yet";
  errorMessage.style.display  = "inline";
  return false;

  var url = "http://hekla.snertill.is/Hafnarfjordur_technical/web/teikningar/default.aspx?search_by_to=1";
  var landnr,address;
  landnr = document.getElementsByName("search_landnr")[0].value;
  address = document.getElementsByName("search_address")[1].value;
  address = address.replace(/ /, "+");
  url += "&search_address=" + encodeURIComponent(address);
  url += "&search_landnr=" + landnr;
  console.log(url);
}
*/

var clearDrawingsPanelInputs = function() {
  document.getElementById("ErrorMessageDrawings").innerHTML = "";
  document.getElementById("ErrorMessageDrawings").style.display  = "none";
  document.getElementsByName("search_address")[0].value = "";
  //document.getElementsByName("search_tenginr")[0].value = "";
}

var clearPropertyPaperInputs = function() {
  document.getElementById("ErrorMessageDrawings").innerHTML = "";
  document.getElementById("ErrorMessageDrawings").style.display  = "none";
  document.getElementsByName("search_address")[1].value = "";
  document.getElementsByName("search_landnr")[0].value = "";
}

// For address search, selecting a  result  tozoom to
var activeRowAdd = null;
var activeRowDrawing = null;
//var activeRowSite = null;

/* Added by Ari Þórðarson on 27/11/2008 
 * This variable tells weather a row is selected in the search dialog.
 */
var sneSearchRowSelected = false;


/* Parameter drawingCount added by Ari Þórðarson on 28/11/2008 
 * DrawingCount: number of drawings for the selected address
 */
function selectSearchResult(rowSelected, x, y, drawingCount)
{
	if (drawingCount != null)
	{
		if (drawingCount > 0)
		{
			document.getElementById('SneAllDrawings').disabled = false;
		}
		else
		{
			document.getElementById('SneAllDrawings').disabled = true;
		}
	}
	else
	{
		document.getElementById('SneAllDrawings').disabled = false;
	}

	
	document.getElementById('SearchHidden').value = x + ";" + y;
	
	/* Added by Ari Þórðarson on 10/11/2008 
	 * Set the heinum of the selected row into a hidden field
	*/
	document.getElementById('SearchHiddenHeinum').value = rowSelected.split('.')[0];
	document.getElementById('ShowSearchButton').disabled = false;
	
	/* Added by Ari Þórðarson on 27/11/2008 */
	sneSearchRowSelected = true;
	
	if (activeRowAdd && activeRowDrawing /*&& activeRowSite*/) {
		document.getElementById(activeRowAdd).className = "result leftColumn";
		document.getElementById(activeRowDrawing).className = "result rightColumn";
		//document.getElementById(activeRowSite).className = "result rightColumn";
	}
	
	activeRowAdd = rowSelected + "add";
	activeRowDrawing = rowSelected + "drawing";
	//activeRowSite = rowSelected + "site";
	
	document.getElementById(activeRowAdd).className = "result leftColumn activeRow";
	document.getElementById(activeRowDrawing).className = "result rightColumn activeRow";
	//document.getElementById(activeRowSite).className = "result rightColumn activeRow";
}
 
// this function is called when the mouse is hovering a search result
// if bInOut = true, we're called by "onmouseover"
// if bInOut = false we're called by "onmouseout"
function hoverSelectedSearchResult(bInOut,rowSelected) 
{
	if(bInOut) {
		document.getElementById(rowSelected+"add").className = "result leftColumn hoverRow";
		document.getElementById(rowSelected+"drawing").className = "result rightColumn hoverRow";
		//document.getElementById(rowSelected+"site").className = "result rightColumn hoverRow";
	} else {
		if(activeRowAdd) { 
			// An active row has been selected.
			if ( activeRowAdd == rowSelected+"add" && activeRowDrawing == rowSelected + "drawing" /*&& activeRowSite == rowSelected + "site"*/)
			{
				document.getElementById(rowSelected+"add").className = "result leftColumn activeRow";
				document.getElementById(rowSelected+"drawing").className = "result rightColumn activeRow";
				//document.getElementById(rowSelected+"site").className = "result rightColumn activeRow";
			} 
			else 
			{
				document.getElementById(rowSelected+"add").className = "result leftColumn";
				document.getElementById(rowSelected+"drawing").className = "result rightColumn";
				//document.getElementById(rowSelected+"site").className = "result rightColumn";	
			}
		}
		else 
		{
			document.getElementById(rowSelected+"add").className = "result leftColumn";
			document.getElementById(rowSelected+"drawing").className = "result rightColumn";
			//document.getElementById(rowSelected+"site").className = "result rightColumn";
		}
	}
}

/* Added by Ari Þórðarson on 24/11/2008
 * Browser independent function for creating radio buttons.
 * Returns a radio button DOM element that can be appended to another element.
 * string id: id of the radio button.
 * string name: name of the radio button.
 * string value: value of the radio button.
 * boolean checked: weather the radio button should be checked when it is created
 * boolean disabled: weather the radio button should be disabled when it si created
*/
function sneCreateRadioButton(id, name, value, checked, disabled)
{
	var radioButton = null;
	
	/* Default value for checked is false */
	if (checked === null)
	{
		checked = false;
	}
	var checkedString = '';
	if (checked)
	{
		checkedString = 'checked="checked" ';
	}
	
	/* Default value for disabled is false */
	if (disabled === null)
	{
		disabled = false;
	}
	var disabledString = '';
	if (disabled)
	{
		disabledString = 'disabled="disabled" ';
	}
	
	/* Internet Explorer */
	try
	{
		radioButton = document.createElement('<input type="radio" id="' + id + '" name="' + name + '" value="' + value + '" ' + checkedString + disabledString + '/>');
	}
	/* Firefox */
	catch (err)
	{
		radioButton = document.createElement('input');
		radioButton.setAttribute('type', 'radio');
		radioButton.setAttribute('id', id);
		radioButton.setAttribute('name', name);
		radioButton.setAttribute('value', value);
		if (checked)
		{
			radioButton.setAttribute('checked', 'checked');
		}
		if (disabled)
		{
			radioButton.setAttribute('disabled', 'disabled');
		}
	}
	return radioButton;
}

/* Added by Ari Þórðarson on 13/11/2008 
 * Returns an array with the layer names in a result string from the map
*/
function sneGetLayersNamesInResultString(resultString)
{
	if (resultString === null || resultString === undefined || resultString === '')
	{
		return [];
	}

	var outputArray = [];
	var x = resultString.split('-');
	for (var i = 0; i < x.length - 1; i++)
	{
		outputArray[i] = x[i].split(';')[0].replace(',', '');
	}
	return outputArray;
}

/* Added by Ari Þórðarson on 14/11/2008
 * function sneContains(arr, str)
 * INPUT PARAMETERS
 * str:  String with comma seperated values
 * arr:  Array of strings.
 * RETURN VALUE
 * Returns true if arr contains all of the comma seperated values in str.  Else false.
 */
function sneContains(arr, str)
{
	var strArray = str.split(',');
	for (var i = 0; i < strArray.length; i++)
	{
		var hasValue = false;
		for (var j = 0; j < arr.length; j++)
		{
			if (strArray[i] === arr[j])
			{
				hasValue = true;
			}
		}
		if (!hasValue)
		{
			return false;
		}
	}
	return true;
}

/* Added by Ari Þórðarson on 2/1/2009
 * Converts an array of strings to a string with comma seperated values
 * INPUT PARAMETERS
 * array: Array of strings.
 * RETURN VALUE
 * String with the values in the array seperated by commas.
 * Example: 
 * alert(sneArrayToString(['hello', '_sdf9', '09', '', 3245234]));
 */
function sneArrayToString(array)
{
	var outputString = '';
	var i;
	for (i = 0; i < array.length; i++)
	{
		outputString += array[i];
		
		if (i < array.length - 1)
		{
			outputString += ',';
		}
	}
	return outputString;
}

/* Added by Ari Þórðarson on 16/1/2009 
 * Creates a cookie in the browser.
 * string name: Name of the cookie
 * string value: Value of the cookie
 * number day: Number of days the browser should keep the cookie
 */
function sneCreateCookie(name, value, days)
{
	value = encodeURIComponent(value);
	var expires;
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		expires = "; expires=" + date.toGMTString();
	}
	else 
	{
		expires = "";
	}
	document.cookie = name + "=" + value + expires + "; path=/";
}

/* Addded by Ari Þórðarson on 16/1/2009
 * Returns the value of a cookie in the browser with a specified name.
 * string name: Name of the cookie
 */
function sneReadCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for (var i = 0 ; i < ca.length; i++)
	{
		var c = ca[i];
		while (c.charAt(0) === ' ')
		{
			c = c.substring(1, c.length);
		}
		if (c.indexOf(nameEQ) === 0)
		{
			return decodeURIComponent(c.substring(nameEQ.length, c.length));
		}
	}
	return null;
}

/* Added by Ari Þórðarson on 16/1/2009
 * Deletes a cookie with a specified name.
 * string name: Name of the cookie to delete.
 */
function sneEraseCookie(name)
{
	sneCreateCookie(name, "", -1);
}

// Return a boolean value telling whether // the first argument is an Array object. 
function sneIsArray() {
    if (typeof arguments[0] == 'object') {  
        var criterion = arguments[0].constructor.toString().match(/array/i); 
        return (criterion != null);  
    }
    return false;
}

function sneTrim(str, chars) {
    return sneLtrim(sneRtrim(str, chars), chars);
}

function sneLtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function sneRtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

