document.getElementsByClassName = function(name) {
	var results = new Array();
	var elems = document.getElementsByTagName("*");
	for (var i=0; i<elems.length; i++) {
		var classes=elems[i].className.split(" ");
  		for(j=0;j<classes.length;j++){
  			if(name==classes[j]){
  				results.push(elems[i]);
  			}
  		}
	}
	return results;
};

function addEvent(elm,evType,fn,useCapture) {
 if(elm.addEventListener) {
 elm.addEventListener(evType,fn,useCapture);
 return true;
 }else if (elm.attachEvent) {
	var r=elm.attachEvent('on'+evType, fn);
	return r;
 }else {
	elm['on'+evType]=fn;
 }
}

function findTarget(e) {
  var target; 

  if (window.event && window.event.srcElement) 
    target = window.event.srcElement;
  else if (e && e.target)
    target = e.target;
  if (!target)
    return null;

  while (target != document.body &&
      target.nodeName.toLowerCase() != 'a')
    target = target.parentNode;

  if (target.nodeName.toLowerCase() != 'a')
    return null;

  return target;
}

function cancelClick(ev) { 
	if (window.event && window.event.returnValue) { 
		window.event.returnValue = false; 
	} else if (ev && ev.preventDefault) { 
		ev.preventDefault(); 
 	} else {
 		return false;
 	}
}

function createMarker(point,html,category) {
	
	var i=new GIcon(G_DEFAULT_ICON);
	
	switch(category) {
		case "1":
			i.image="/images/eatmarker.png";
			break;
		case "2":
			i.image="/images/sleepmarker.png";
			break;
		case "3":
			i.image="/images/drinkmarker.png";
			break;
		case "4":
			i.image="/images/carmarker.png";
			break;
		case "5":
			i.image="/images/venuemarker.png";
			break;
		case "6":
			i.image="/images/shopmarker.png";
			break;
		case "7":
			i.image="/images/smileymarker.png";
			break;
		case "8":
			i.image="/images/miscmarker.png";
			break;
		default:
			i.image="/images/grey.png";
			break;
	}
	
	i.iconSize=new GSize(30,30);
	i.shadowSize=new GSize(0,0);
	options={icon:i};
	
	var marker = new GMarker(point,options);
	if(html.length>0) {
    	GEvent.addListener(marker, "click", function() {
    		marker.openInfoWindowHtml(html,{maxWidth:240});
    	});
    }
    return marker;
}

function createDraggableMarker(point,html) {
	var marker = new GMarker(point);
    GEvent.addListener(marker, "click", function() {
    	marker.openInfoWindowHtml(html);
    });
    GEvent.addListener(marker, "dragstart", function() {
  		marker.closeInfoWindow();
  	});

	GEvent.addListener(marker, "dragend", function() {
  		marker.openInfoWindowHtml("Just bouncing along...");
  	});

    return marker;
}

function stripslashes( str ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Ates Goral (http://magnetiq.com)
    // +      fixed by: Mick@el
    // +   improved by: marrtins
    // +   bugfixed by: Onno Marsman
    // *     example 1: stripslashes('Kevin\'s code');
    // *     returns 1: "Kevin's code"
 
    return (str+'').replace('/\0/g', '0').replace('/\(.)/g', '$1');
}


location.querystring = (function() {  
   	var result = {};  
  	var querystring = decodeURIComponent(location.search);  
  	if (!querystring) return result;
	var pairs = querystring.substring(1).split("&");  
	var splitPair;  
	for (var i = 0; i < pairs.length; i++) {
 		
		splitPair = pairs[i].split("=");
		if (splitPair[0].indexOf("[]")>-1){
			//pair is an array assignment
			var key=splitPair[0].substr(0,splitPair[0].length-2);
			
			if(!result[key]){
				//initialize the array
				result[key]=new Array();
			} 
			result[key].push(stripslashes(splitPair[1]));
		
		}else{
			//pair is a string assignment	
			result[splitPair[0]] = stripslashes(splitPair[1]);
		}	
	}
	return result;  
})();

function clearTextArea() {
	if(this.value=="Enter text here") {
		this.value="";
	}
}

function createErrMsg(field,errType){
		
	switch(errType){
		case "req":
			errText=" This field is required.";
			break;
		case "check_req":
			errText=" This field is required.";
			break;
		case "email":
			errText=" This does not appear to be a valid email address.";
			break;
		case "url":
			errText=" This does not appear to be a valid website address.";
			break;
		case "pwdlength":
			errText=" Your password must be between 6 and 8 characters long.";
			break;
		case "pwdmatch":
			errText=" Your password fields do not match.";
			break;
		case "emailmatch":
			errText=" Your email fields do not match.";
			break;
}
		
	var errSpan=document.createElement("span");
	errSpan.setAttribute("class","errmsg");
	errTextNode=document.createTextNode(errText);
	errSpan.appendChild(errTextNode);
	
	if(errType=="check_req") {
		
		var legend=field.getElementsByTagName("legend")[0];
		legend.appendChild(errSpan);
	
	} else {
	
		var labels=document.getElementsByTagName("label");
		for(i=0;i<labels.length;i++){
			if(labels[i].getAttribute("for")==field.getAttribute("id")){
				labels[i].appendChild(errSpan);
			}
		}
	}
	
	if(!firstError){
		firstError=field;
	}
		
}

function validate(field,valType,matchField){

	switch(valType){
		case "req":
			if(!field.value || field.value==""){
				isValid=false;
				createErrMsg(field,valType);
			}
			break;
		case "check_req":
			var checked=false;
			var boxes=field.getElementsByTagName("input");
			for (i=0;i<boxes.length;i++){
				if(boxes[i].checked){
					checked=true;
				}
			}
			if(!checked){
				isValid=false;
				createErrMsg(field,valType);
			}
			break;
		case "email":
			var re=/^\w+([\.\-]?\w+)*@\w+([\.-]?\w+)*(\.[A-Za-z]{2,4})+$/;
			if(!re.test(field.value)){
				isValid=false;
				createErrMsg(field,valType);
			}
			break;
		case "url":
			var re=/^(http:\/\/)?([\w-]+\.)+([A-Za-z]{2,4})+(\/[\w-]+(\/)?)*$/
			if(!re.test(field.value)){
				isValid=false;
				createErrMsg(field,valType);
			}
			break;
		case "pwdmatch":
		case "emailmatch":
			if(field.value!=matchField.value){
				isValid=false;
				createErrMsg(field,valType);
			}
			break;
		case "pwdlength":
			if(field.value.length<6 || field.value.length>8){
				isValid=false;
				createErrMsg(field,valType);
			}
	}
}
function validateReg(){
	//password required
	validate(document.getElementById("user_password"),"req");
	
	
	if(document.getElementById("user_password").value!=""){
		//password must be between 6 & 8 characters
		validate(document.getElementById("user_password"),"pwdlength");
		//passwords must match
		validate(document.getElementById("user_password"),"pwdmatch",document.getElementById("check_password"));
	}
	
	//email required
	validate(document.getElementById("user_email"),"req");

	if(document.getElementById("user_email").value!=""){
		//email must be valid
		validate(document.getElementById("user_email"),"email");
		//emails must match
		validate(document.getElementById("user_email"),"emailmatch",document.getElementById("check_email"));
	}
}

function processCookie (cookieName, func, name, value, days)　{
  if (func == 'kill' || (cookieName == name && func == 'clear')) {
    document.cookie = cookieName + '=; expires=-86400000';
    return true;
  }

  var nameQuery = cookieName == name ? name + '=' : name + '-';
  var thisCookie = '';
  var cookieString = '';
  var cookies = document.cookie.split(';');
  for (var x = 0; x < cookies.length; x++) {
    if (cookies[x].indexOf(cookieName) != -1)
      thisCookie = cookies[x].substring(cookies[x].indexOf('=') + 1);
      thisCookie = URLDecode(thisCookie);
  }

  if (func == 'clear' || func == 'set') {
    if (func == 'clear') {
      var myregexp = new RegExp('(\\|' + nameQuery + '[\\w]*|' +
                                 nameQuery + '[\\w]*\\||' +
                                 nameQuery + '[\\w]*)');
      cookieString = thisCookie.replace(myregexp, '');
    } else if (func=='set') {
      if (cookieName == name || thisCookie == '')
        cookieString = nameQuery + value;
      else {
        var myregexp = new RegExp('(' + nameQuery + '[\\w]*)');
        var match = myregexp.exec(thisCookie);
        if (match != null && match.length > 1 && match[1] != '')
          cookieString = thisCookie.replace(match[1], nameQuery + value);
        else
          cookieString = thisCookie + 
                         (thisCookie != '' ? '|' : '') + 
                         nameQuery + value;
      }
    }
    var expires = '';
    if (days) {
      var date = new Date();
      date.setTime(date.getTime()+(days*24*60*60*1000));
      var expires = '; expires=' + date.toGMTString();
    }
    document.cookie = cookieName + 
                      '=' +
                      URLEncode(cookieString) +
                      expires +
                      '; path=/; domain=.' +
                      window.location.hostname;
    return true;
  }

  if (func == 'read') {
    if (thisCookie != '') {
      var myregexp = new RegExp(nameQuery + '([\\w]*)');
      var match = myregexp.exec(thisCookie);
      if (match != null && match.length > 1 && match[1] != '')
        return match[1];
    }
    return null;
  }
}

var defaultCenter=new GLatLng(52.9505, -1.1530);

if(navigator.geolocation){
	var geo=navigator.geolocation;
} else if(google.gears){
	var geo = google.gears.factory.create('beta.geolocation');
} else if(window.google && google.gears && (typeof(google.gears)=='object')){
	var geo = google.gears.factory.create('beta.geolocation');
} else {
	var geo = false;
}


