var validate = true;
var highlightColour = "red";


var map;

  
      function showAddress(address) {

      geocoder.getLatLng(
        address,
        function(point) {
          if (!point) {
            alert(address + " not found");
          } else {
            map.clearOverlays();
            map.setCenter(point, 13);
            var marker = new GMarker(point, {draggable: true});
            GEvent.addListener(marker, "dragend", function() {
              var latlng = marker.getLatLng();
			  //alert("lat:"+latlng.lat()+"lon:"+latlng.lng());
			  //return;
              document.getElementById("lat").value = latlng.lat();
              //document.getElementById("mapLat").innerHTML = latlng.lat();
              document.getElementById("latDisplay").innerHTML = latlng.lat();
              
              document.getElementById("lon").value = latlng.lng();
              //document.getElementById("mapLon").innerHTML = latlng.lng();
              document.getElementById("lonDisplay").innerHTML = latlng.lng();
              
            });
            var latlng = marker.getLatLng();
			 //alert("lat:"+latlng.lat()+"lon:"+latlng.lng());
              document.getElementById("lat").value = latlng.lat();
              //document.getElementById("mapLat").innerHTML = latlng.lat();
              document.getElementById("latDisplay").innerHTML = latlng.lat();
              
              document.getElementById("lon").value = latlng.lng();
              //document.getElementById("mapLon").innerHTML = latlng.lng();
              document.getElementById("lonDisplay").innerHTML = latlng.lng();
            map.addOverlay(marker);
          }
        }
      );
    }



	function locateOnMap() {
		var rForm = document.forms.regFrm;
		var sForm = document.forms.searchFrm;
		var str = "";
		
		if(rForm.address.value) {
			str = str + rForm.address.value + ", ";
		}
		if(rForm.address2.value) {
			str = str + rForm.address2.value + ", ";
		}
		if(rForm.address3.value) {
			str = str + rForm.address3.value + ", ";
		}
		if(rForm.Address4.value) {
			str = str + rForm.Address4.value + ", ";
		}
		if(rForm.postcode.value) {
			str = str + rForm.postcode.value + ", ";
		}
		if( rForm.elements['country-region-cont'].options[rForm.elements['country-region-cont'].selectedIndex].value != "-1") {
			str = str + rForm.elements['country-region-cont'].options[rForm.elements['country-region-cont'].selectedIndex].text;
		}
		
		showAddress(str);
		return true;
	}
	
	function locateAdvertOnMap() {
		var rForm = document.forms.regFrm;
		var sForm = document.forms.searchFrm;
		var str = "";
		
		if(rForm.address.value) {
			str = str + rForm.address.value + ", ";
		}
		if(rForm.address2.value) {
			str = str + rForm.address2.value + ", ";
		}
		if(rForm.address3.value) {
			str = str + rForm.address3.value + ", ";
		}
		if(rForm.Address4.value) {
			str = str + rForm.Address4.value + ", ";
		}
		if(rForm.postal.value) {
			str = str + rForm.postal.value + ", ";
		}
		if( rForm.elements['country'].options[rForm.elements['country'].selectedIndex].value != "-1") {
			str = str + rForm.elements['country'].options[rForm.elements['country'].selectedIndex].text;
		}
		
		showAddress(str);
		return true;
	}
    
     function prefillDir(cat) {
    	var dirSel = document.getElementById('dir');
     	var ArrayToUse = cats[cat];
     	
     	for (x in ArrayToUse) {
 		if((typeof(subcat) !="undefined") && (subcat == ArrayToUse[x])) {
 			dirSel.options[x] = new Option(ArrayToUse[x], ArrayToUse[x], true, true)
 		} else {
 			dirSel.options[x] = new Option(ArrayToUse[x], ArrayToUse[x], true, false)
 		}
     	}
     	
    }
    
    function refillDir(selObj) {
    	var dirSel = document.getElementById('dir');
    	clearDirChoices();
    	var ArrayToUse = cats[selObj.options[selObj.selectedIndex].value];
    	
    	for (x in ArrayToUse) {
		if((typeof(preDir) !="undefined") && (preDir == ArrayToUse[x])) {
			dirSel.options[x] = new Option(ArrayToUse[x], ArrayToUse[x], true, true)
		} else {
			dirSel.options[x] = new Option(ArrayToUse[x], ArrayToUse[x], true, false)
		}
    	}
    	
    }
    
    function clearDirChoices() {
    	var sel = document.getElementById('dir');
    	for(var i = 0; i < sel.options.length; i++ ) {
    		sel.options[i] = null;
    	}
    	sel.options[0] = new Option('(Select from above)', '-1', true, true);
    	return;
    }
    

function isEmpty(str) {
	if(!str || str =="" || !str.length) {
		return true;
	} 
	return false;
}

function isValidEmailAddress (emailStr) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
		return false;
	}
	var user=matchArray[1]
	var domain=matchArray[2]

	if (user.match(userPat)==null) {
	    return false
	}
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
	    // this is an IP address
		  for (var i=1;i<=4;i++) {
		    if (IPArray[i]>255) {
			return false
		    }
	    }
	    return true
	}

	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
	    return false
	}

	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || 
	    domArr[domArr.length-1].length>3) {
	   return false
	}

	if (len<2) {
	   return false
	}


	return true;
}

function isValidFileExt(str) {
	var ext =  str.substr(str.lastIndexOf(".") +1, str.length); 
	//alert(ext);
	if(ext == "mp3" || ext == "jpg" || ext == "pdf") {
		return true;
	}
	return false;
}

function hasSelectedIndex(obj) {
	if(typeof(obj) == "undefined") { alert("not an object"); return false; }
	if(obj.options[obj.selectedIndex].value != "-1" && obj.options[obj.selectedIndex].value != "") {
		return true;
	}
	return false;
}


 
    function checkRegisterFrm(obj) {
	
	if(!validate) { return true; }
	
	var objsToHighlight = Array();
	var message = "Whoops you missed something out of the form:     \n\n";
	var errors = 0;
	
	// add lat and lon
	
	if(isEmpty(obj.lat.value) || isEmpty(obj.lon.value)) {
		message +="   - You have not selected your location on the map.\n";
		errors++;
	}
	
	if(isEmpty(obj.directory.value)) {
		message +="   - Your entry title is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.directory;
	}
	
	if(isEmpty(obj.www.value)) {
		message +="   - Your website is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.www;
	}
	
	if(isEmpty(obj.contact.value)) {
		message +="   - Your contact name is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.contact;
	}
	
	if(isEmpty(obj.position.value)) {
		message +="   - Your contact job position is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.position;
	}
	
	if(isEmpty(obj.telephone.value)) {
		message +="   - Your telephone number is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.telephone;
	}
	
	if(isEmpty(obj.mobile.value)) {
		message +="   - Your mobile number is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.mobile;
	}
	
	if(isEmpty(obj.email.value) && !isValidEmailAddress(obj.email.value) ) {
		message +="   - Your email address is missing or invalid.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.email;
	}
	
	if(isEmpty(obj.address.value)) {
		message +="   - Your address is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.address;
	}
	
	if(isEmpty(obj.city.value)) {
		message +="   - Your city is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.city;
	}
	
	if(isEmpty(obj.postcode.value)) {
		message +="   - Your post/zip code is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.postcode;
	}
	
	// country
	if(!hasSelectedIndex(obj.elements['country-region-cont'])) {
		message +="   - Your country is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.elements['country-region-cont'];
	}
	
	
	//type
	if(!hasSelectedIndex(obj.elements['type'])) {
		message +="   - Your first category is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.elements['type'];
	}
	
	
	// dir
	if(!hasSelectedIndex(obj.elements['dir'])) {
		message +="   - Your sub-category is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.elements['dir'];
	}
	
		
	for(var j=0; j < obj.elements.length; j++) {
		if(obj.elements[j].type=="file" && obj.elements[j].value.length) {
			if(!isValidFileExt(obj.elements[j].value)) {
				message +="   - A file you have selected is not allowed.\n";
				errors++;
				objsToHighlight[objsToHighlight.length] = obj.elements[j];
			}
		}
	}

		if(errors > 0) {
			message+="\n\nErrors: " +errors+ "\nPlease correct this and try again.\n\n";
			for(var i=0;i<objsToHighlight.length;i++) {
				objsToHighlight[i].className = 'formError';
			}
			objsToHighlight[0].focus();
			alert(message);
			return false;
		} else {
			obj.submitBtn.disabled = true;
			if(confirm("Are you sure all the information you have entered is correct?\n")) {
				
				return true;
			}
			else {
				obj.submitBtn.disabled = false;
				return false;
				
			}
		}
		return false;


    }
	
	
function checkAdvertFrm(obj) {
	
	if(!validate) { return true; }
	
	var objsToHighlight = Array();
	var message = "Whoops you missed something out of the form:     \n\n";
	var errors = 0;
	
	// add lat and lon
	
	
	if(isEmpty(obj.lat.value) || isEmpty(obj.lon.value)) {
		message +="   - You have not selected your location on the map.\n";
		errors++;
	}
	
	
	if(isEmpty(obj.title.value)) {
		message +="   - Your  title is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.title;
	}
	
	if(isEmpty(obj.description.value)) {
		message +="   - Your description is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.description;
	}
	
	if(isEmpty(obj.www.value)) {
		message +="   - Your website is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.www;
	}
	
	if(isEmpty(obj.contact.value)) {
		message +="   - Your contact name is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.contact;
	}
	
	if(isEmpty(obj.tel.value)) {
		message +="   - Your telephone number is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.tel;
	}
	
	if(isEmpty(obj.email.value) && !isValidEmailAddress(obj.email.value) ) {
		message +="   - Your email address is missing or invalid.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.email;
	}
	
	if(isEmpty(obj.postal.value)) {
		message +="   - Your post/zip code is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.postal;
	}
	
	// country
	if(!hasSelectedIndex(obj.elements['country'])) {
		message +="   - Your country is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.elements['country'];
	}
	
	
	//type
	if(!hasSelectedIndex(obj.elements['type'])) {
		message +="   - Your first category is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.elements['type'];
	}
	
	
	// dir
	if(!hasSelectedIndex(obj.elements['dir'])) {
		message +="   - Your sub-category is missing.\n";
		errors++;
		objsToHighlight[objsToHighlight.length] = obj.elements['dir'];
	}
	
		
	for(var j=0; j < obj.elements.length; j++) {
		if(obj.elements[j].type=="file" && obj.elements[j].value.length) {
			if(!isValidFileExt(obj.elements[j].value)) {
				message +="   - A file you have selected is not allowed.\n";
				errors++;
				objsToHighlight[objsToHighlight.length] = obj.elements[j];
			}
		}
	}

		if(errors > 0) {
			message+="\n\nErrors: " +errors+ "\nPlease correct this and try again.\n\n";
			for(var i=0;i<objsToHighlight.length;i++) {
				objsToHighlight[i].className = 'formError';
			}
			objsToHighlight[0].focus();
			alert(message);
			return false;
		} else {
			obj.submitBtn.disabled = true;
			if(confirm("Are you sure all the information you have entered is correct?\n")) {
				
				return true;
			}
			else {
				obj.submitBtn.disabled = false;
				return false;
				
			}
		}
		return false;


    }
    
    

