var map = null;
var sidebar_html = "";
var ie=document.all;
var nn6=document.getElementById&&!document.all;


function createMarker2(point,name,html,lat,lon)
{
	var marker = new GMarker(point,icon);
	GEvent.addListener(marker, "click", function(marker) {
 		marker.openInfoWindowHtml(html);
 		//map.setCenter(new GLatLng(lat, lon), 12);
 		//map.removeOverlay(marker);
	});
	// save the info we need to use later for the sidebar
	 gmarkers[i] = marker;
	 htmls[i] = html;
	// add a line to the sidebar html
	//sidebar_html += '<a href="javascript:myclick(' + i + ')">' + name + '</a><br>Details of property here<br><br>';
	i++;
	return marker;
}


function createMarker(point,name,html)
{
	var marker = new GMarker(point,icon);
	GEvent.addListener(marker, "click", function() {
	  marker.openInfoWindowHtml(html);
	});
	gmarkers[i] = marker;
	htmls[i] = html;
	sidebar_html += '<a href="javascript:myclick(' + i + ')">' + name + '</a><br/>';
	i++;
return marker;
}


// This function picks up the click and opens the corresponding info window - not used at the mo
function myclick(i)
{
	gmarkers[i].openInfoWindowHtml(htmls[i]);
}

function regForm()
{

	var fieldnames = "email,password,password_confirm,firstname,lastname,address1,city,postcode,termsandconditions_1,industry";
	var fieldtypes = "text,text,text,text,text,text,text,text,checkbox,text";
	var validatetypes = "email|required,required|length>5|length<13,required,required,required,required,required,required,required,required";

	if(document.getElementById("loginfail") != null) document.getElementById("loginfail").style.display = "none";
	if(document.getElementById("passfail") != null) document.getElementById("passfail").style.display = "none";
	if(document.getElementById("passok") != null) document.getElementById("passok").style.display = "none";

	var fcheck = formValidate("regform", fieldnames, fieldtypes, validatetypes)

	if(fcheck)
	{
		return true;
	}else{
		return false;
	}

}

function accountForm()
{

	var fieldnames = "email,password,password_confirm,firstname,lastname,address1,city,postcode";
	var fieldtypes = "text,text,text,text,text,text,text,text";
	var validatetypes = "email|required,required|length>5|length<13,required,required,required,required,required,required";

	var fcheck = formValidate("accountform", fieldnames, fieldtypes, validatetypes)

	if(fcheck)
	{
		return true;
	}else{
		return false;
	}

}

function newsletterForm()
{

	var fieldnames = "email";
	var fieldtypes = "text";
	var validatetypes = "email|required";

	var fcheck = formValidate("newsletterform", fieldnames, fieldtypes, validatetypes)

	if(fcheck)
	{
		return true;
	}else{
		return false;
	}
}

function contactForm()
{
	var fieldnames = "name,email,comments";
	var fieldtypes = "text,text,textarea";
	var validatetypes = "required,email|required,required";

	//alert("in contact js");

	var fcheck = formValidate("contactform", fieldnames, fieldtypes, validatetypes);

	//alert(fcheck);

	if(fcheck)
	{
		return true;
	}else{
		return false;
	}
}

function wantedForm()
{
	var fieldnames = "name,email,city,description";
	var fieldtypes = "text,text,text,textarea";
	var validatetypes = "required,email|required,required,required";

	var fcheck = formValidate("wantedform", fieldnames, fieldtypes, validatetypes)

	if(fcheck)
	{
		return true;
	}else{
		return false;
	}
}

function validatePosInt(num)
{
	if(isNaN(num) || num < 1)
	{
		return false;
	}else{
		return true;
	}
}


function propForm()
{
	/* fields to check are

	city/city_other - one or other required
	postcode - required
	Number of spaces/workstations - +ve integer
	How long do you anticipate the workspace being available for (min. 3 months) - required
	Expected price range - currency, lower required, higher > lower
	Confirmation of standard facilities in good working order and up to date - checked
	Description - required - 50 words max

	*/

	// hide all error messages

	document.getElementById("form_ermsg").style.display = "none";
	var fieldsa = new Array("city","postcode","number_of_workstations","available_length_months","price_range_lower","goodwo","prop_description");

	for(i=0;i<fieldsa.length;i++)
	{
		document.getElementById("ermsg_"+fieldsa[i]).style.display = "none";
	}

	var city = document.getElementById("city").value;
	var city_other = document.getElementById("city_other").value;
	var postcode = document.getElementById("postcode").value;
	var number_of_workstations = document.getElementById("number_of_workstations").value;
	var available_length_months = document.getElementById("available_length_months").value;
	var price_range_lower = document.getElementById("price_range_lower").value;
	var price_range_upper = document.getElementById("price_range_upper").value;
	var goodwo = document.getElementById("goodwo").checked;
	var description = document.getElementById("prop_description").value;
	var sqfeet = document.getElementById("sqfeet").value;

	var passedval = true;

	if((city.length == 0 || city == "othercity") && city_other.length == 0)
	{
		passedval = false;
		document.getElementById("ermsg_city").style.display = "block";
	}

	if(postcode.length == 0)
	{
		passedval = false;
		document.getElementById("ermsg_postcode").style.display = "block";
	}

	var valid = true;

	var valifws = true;
	var validsq = true

	if(!validatePosInt(number_of_workstations))
	{
		valifws = false;
	}

	if(!validatePosInt(sqfeet))
	{
		validsq = false;
	}

	if(!(validsq) && !(valifws))
	{
		valid = false;
	}else if(validsq && !(valifws) && number_of_workstations.length > 0) {
		valid = false;
	}else if(valifws && !(validsq) && sqfeet.length > 0) {
		valid = false;
	}

	if(!valid)
	{
		passedval = false;
		document.getElementById("ermsg_number_of_workstations").style.display = "block";
	}

	if(available_length_months.length == 0)
	{
		passedval = false;
		document.getElementById("ermsg_available_length_months").style.display = "block";
	}

	valid = true;
	var validlower = true;
	var validupper = true;
	var msg = "";

	if(price_range_lower.length == 0)
	{
		valid = false;
		validlower = false;
		msg = "Lower price range is required";
	}else{
		if(!validRegEx(price_range_lower,"currency"))
		{
			valid = false;
			validlower = false;
			msg = "Lower price range is not a valid price";
		}
	}

	if(price_range_upper.length > 0)
	{
		 if(!validRegEx(price_range_upper,"currency"))
		 {
			 if(!valid)  msg += "\n";
			 valid = false;
			 validupper = false;
			 msg += "Upper price range is not a valid price";
		 }

		 if(validlower && validupper)
		 {
			 if(price_range_lower-0 > price_range_upper-0)
			 {
				 if(!valid)  msg += "\n";
			 	valid = false;
			 	msg += "Upper price must be grater than lower price";
			 }
		 }
	}

	if(!valid)
	{
		passedval = false;
		document.getElementById("ermsg_price_range_lower").innerHTML = msg;
		document.getElementById("ermsg_price_range_lower").style.display = "block";
	}else{
		document.getElementById("ermsg_price_range_lower").innerHTML = "";
	}

	if(!goodwo)
	{
		passedval = false;
		document.getElementById("ermsg_goodwo").style.display = "block";
	}

	document.getElementById("ermsg_prop_description").innerHTML = "Please provide a description for your property";

	if(description.length == 0)
	{
		passedval = false;
		document.getElementById("ermsg_prop_description").style.display = "block";
	}else{
		count = description.replace(/\S+/g, 'a').replace(/\s+/g, '').length
		if(count > 55)
		{
			passedval = false;
			document.getElementById("ermsg_prop_description").innerHTML = "Your description is too long, please only use up to 50 characters";
			document.getElementById("ermsg_prop_description").style.display = "block";
		}
	}

	// if ok then set js flag and return true else return false

	if(!passedval)
	{
		document.getElementById("form_ermsg").style.display = "block";
		document.getElementById("form_ermsg").scrollIntoView(true);
		return false;
	}else{
		document.getElementById("jsval").value = "1soOK";
		return true;
	}



	return false;

}

function validRegEx(str,type)
{

	/*

	  /^\d+$/                	 	All-digit
	  /^[1-9]\d*$/            		All-digit, non-zero
	  /^\s*[-+]\d+\s*$/       		Unbroken signed integer + spaces
	  /^\d{1,5}$/             		1 to 5 digits
	  /^\d+\.\d\d$/					As money, 2 decimals
	  /^\d+(\.\d{2})?$/        		As money, 2 decimals optional

	*/

	var pattern = null;

	switch(type)
	{
		case "currency":
			pattern = "^\\d*(\\.\\d{1,2})?$";
			break;

	}

	var re = new RegExp(pattern);
	if (str.match(re))
	{
		return true;
	} else {
		return false;
	}

}

function checkOther(oE)
{
	var tr = document.getElementById("tr_city_other");
	if(oE.value == "othercity")
	{
		tr.style.display = nn6 ? "table-row" : "block";
	}else{
		tr.style.display = "none";
		document.getElementById("city_other").value = "";
	}

}

function checkImage()
{
	if(document.getElementById("imageupload").value == "")
	{
		alert("Please select an image to upload");
		return false;
	}else{
		return true;
	}
}

function submitSearch(oE)
{
	if (oE.value != "") document.searchform.submit();
}

function checkSearch()
{
	if(document.getElementById("locale").value != "") return true;

	return false;
}
