	
	var markerCount=0;
	
	jQuery(document).ready(function(){
		
		jQuery('.back_top a').click(function () { 
		  window.scrollTo(0,0);
		  return false;
		});	
	});
	
	function addAddressToMap(response) {
      var place,point,marker,description;
      if (!response || response.Status.code != 200) {
      	 
      } 
      else {
        place = response.Placemark[0];
        if(markerCount==0){
 	 		map.setCenter(new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]), 13);
 	 	}
        point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
        marker = new GMarker(point);
        
        
        GEvent.addListener(marker, "click", function() {
	    	marker.openInfoWindowHtml("<br/>"+place.address + '<br/>');
	  	});
 	 	map.addOverlay(marker);
 	 	markerCount=markerCount+1;
      }
    }
    
    function showLocation(address) {
    	geocoder.getLocations(address, addAddressToMap);
    }
    
  
    function changeMapByAddress(address){
		geocoder.getLocations(address, panToAddressPoint);
	}
    
    function panToAddressPoint(response){
      var place;
      if (!response || response.Status.code != 200) {
        //alert("Sorry, we were unable to geocode that address");
      } 
      else {
        place = response.Placemark[0];
        point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
        marker = new GMarker(point);
        GEvent.addListener(marker, "click", function() {
	    	marker.openInfoWindowHtml("<br/>"+place.address + '<br/>');
	  	});
	  	map.addOverlay(marker);
	  	window.setTimeout(function() {
  				map.panTo(new GLatLng(place.Point.coordinates[1], place.Point.coordinates[0]));
		}, 100);
		marker.openInfoWindowHtml("<br/>"+place.address + '<br/>');
      }
    }

   
	
	function getMarkerAddress(idMarker){
		var address;
		jQuery.ajax({
		   async: false,
		   type: "GET",
		   url: "_ajax.php",
		   data: "opc=getMarkerAddress&id="+idMarker,
		   success: function(data){
		   		address=data;
		   }
		});
		return address;
	}
	
	function getMarkerDescription(address){
		var description;
		jQuery.ajax({
		   async: false,
		   type: "GET",
		   url: "_ajax.php",
		   data: "opc=getMarkerDescription&address="+address,
		   success: function(data){
		   		description=data;
		   }
		});
		return description;
	}
	
	
	
	function changeMap(latitude,longitude,layer){
		window.setTimeout(function() {
  				map.panTo(new GLatLng(latitude, longitude));
			}, 100);
	}
	
	
	
	
	function createMarker(point, index,description) {
	  // Create a lettered icon for this point using our icon class
	  var letter = String.fromCharCode("A".charCodeAt(0) + index);
	  var letteredIcon = new GIcon(baseIcon);
	  //letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
	  letteredIcon.image = "http://www.google.com/mapfiles/marker.png"
	  // Set up our GMarkerOptions object
	  markerOptions = { icon:letteredIcon };
	  var marker = new GMarker(point, markerOptions);
	
	  GEvent.addListener(marker, "click", function() {
	    marker.openInfoWindowHtml(description);
	  });
	  return marker;
	}
	
	
	
	function getTranslateEntry(word){
		var translation="";
		jQuery.ajax({
		   async: false,
		   type: "GET",
		   url: "_ajax.php",
		   data: "opc=translate&word="+word,
		   success: function(data){
		    translation = data;
		   }
		 });
		return translation;
	}
	
	function sendForm(array_fields,rta_field,to,subject){
		
		var sendingMsg = getTranslateEntry("sending");
		var h=jQuery('#'+rta_field).outerHeight();
	
		var vars='opc=sendForm&to='+to+'&subject='+subject;
		for(var i=0; i<array_fields.length;i++){
			vars+= "&"+array_fields[i]+"_desc="+jQuery('#'+array_fields[i]).attr('title');
			vars+= "&"+array_fields[i]+"="+jQuery('#'+array_fields[i]).val();
		}
		jQuery('#'+rta_field).html("<h3>"+sendingMsg+"...</h3>");
		jQuery('#'+rta_field).css("display","block");
		jQuery('#'+rta_field).css("height",h+"px");
		
		jQuery.ajax({
		   async: false,
		   type: "GET",
		   url: "_ajax.php",
		   data: vars,
		   success: function(data){
		     jQuery('#'+rta_field).html(data);	
		     //jQuery('#'+rta_field).fadeOut(6000,function(){jQuery('#'+rta_field).css("display","none");});
		   }
		 });
	}
	
	


	
/***********************************************************************/
	
	<!-- Begin
	function emailCheck (emailStr) {
	/* The following pattern is used to check if the entered e-mail address
	   fits the user@domain format.  It also is used to separate the username
	   from the domain. */
	var emailPat=/^(.+)@(.+)$/
	/* The following string represents the pattern for matching all special
	   characters.  We don't want to allow special characters in the address. 
	   These characters include ( ) < > @ , ; : \ " . [ ]    */
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	/* The following string represents the range of characters allowed in a 
	   username or domainname.  It really states which chars aren't allowed. */
	var validChars="\[^\\s" + specialChars + "\]"
	/* The following pattern applies if the "user" is a quoted string (in
	   which case, there are no rules about which characters are allowed
	   and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
	   is a legal e-mail address. */
	var quotedUser="(\"[^\"]*\")"
	/* The following pattern applies for domains that are IP addresses,
	   rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
	   e-mail address. NOTE: The square brackets are required. */
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	/* The following string represents an atom (basically a series of
	   non-special characters.) */
	var atom=validChars + '+'
	/* The following string represents one word in the typical username.
	   For example, in john.doe@somewhere.com, john and doe are words.
	   Basically, a word is either an atom or quoted string. */
	var word="(" + atom + "|" + quotedUser + ")"
	// The following pattern describes the structure of the user
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	/* The following pattern describes the structure of a normal symbolic
	   domain, as opposed to ipDomainPat, shown above. */
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	
	
	/* Finally, let's start trying to figure out if the supplied address is
	   valid. */
	
	/* Begin with the coarse pattern to simply break up user@domain into
	   different pieces that are easy to analyze. */
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
	  /* Too many/few @'s or something; basically, this address doesn't
		 even fit the general mould of a valid e-mail address. */
		//alert("Email address seems incorrect (check @ and .'s)")
		return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	
	// See if "user" is valid 
	if (user.match(userPat)==null) {
		// user is not valid
		//alert("The username doesn't seem to be valid.")
		return false
	}
	
	/* if the e-mail address is at an IP address (as opposed to a symbolic
	   host name) make sure the IP address is valid. */
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		// this is an IP address
		  for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				//alert("Destination IP address is invalid!")
			return false
			}
		}
		return true
	}
	
	// Domain is symbolic name
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		//alert("The domain name doesn't seem to be valid.")
		return false
	}
	
	/* domain name seems valid, but now make sure that it ends in a
	   three-letter word (like com, edu, gov) or a two-letter word,
	   representing country (uk, nl), and that there's a hostname preceding 
	   the domain or country. */
	
	/* Now we need to break up the domain to get a count of how many atoms
	   it consists of. */
	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) {
	   // the address must end in a two letter or three letter word.
	   //alert("The address must end in a three-letter domain, or two letter country.")
	   return false
	}
	
	// Make sure there's a host name preceding the domain.
	if (len<2) {
	   var errStr="This address is missing a hostname!"
	   //alert(errStr)
	   return false
	}
	
	// If we've gotten this far, everything's valid!
	return true;
	}
	//  End -->
	
	
	
	
	
	function checkDate(y,m,d){
		
	   y=document.getElementById(y);
	   m=document.getElementById(m);
	   d=document.getElementById(d);
	   if(m.value==2){
			if(y.value % 4==0){
				if(d.value>29){
					d.value=29;
					
				}
			}
			else{
				if(d.value>28){
				d.value=28;
				
				}
			}
	   }
	   else{
			if(m.value==4||m.vlaue==6||m.value==9||m.value==11){
				if(d.value>30){
					d.value=30;
					
				}
			}
	   }	 
	}	
	
	
	
	function textCounter(field,maxlimit,evento) {
		if(in_array(evento.keyCode)){
			return;	
		}
		if (field.value.length > maxlimit){ // if too long...trim it!
				cancelEvent(evento);
				field.value = field.value.substring(0, maxlimit);
				ex=new Array('8','46','37','38','39','40');
		}
	}		
	

	


	

	function checkTextLength(l){
		aux=new String();
		aux=event.srcElement.value;
		if(aux.length>=l){
			event.returnValue=false;
		}
	}
	
	function checkForm(frm,arr){ //(formulario, array de excepciones)
		var aux="";
			for(var i=0;i<document.getElementById(frm).elements.length;i++){
       			if(document.getElementById(frm).elements[i].type == "password" || document.getElementById(frm).elements[i].type == "text" || document.getElementById(frm).elements[i].type == "select"  || document.getElementById(frm).elements[i].type == "textarea" || document.getElementById(frm).elements[i].type == "select-one" || document.getElementById(frm).elements[i].type == "select multiple"){
		       		if(!in_array(arr,document.getElementById(frm).elements[i].id)){ 
						//document.frmOp.elements[i].checked = true;
						if(document.getElementById(frm).elements[i].value==""){
							aux=aux+"\n"+document.getElementById(frm).elements[i].title;
						}
						else{
							if(document.getElementById(frm).elements[i].id.indexOf('email')!=-1){
								if(!emailCheck(document.getElementById(frm).elements[i].value)){
									aux=aux+"\n"+document.getElementById(frm).elements[i].title;
								}
							}	
						}
						
					}
				}	
		   }
		   if(aux!=""){
				aux="You must complete these fields:" + aux;
			   	alert(aux);
				return false;
		   }
		   else{
				return true;
		   }	
	}	
	
	function checkFormFields(frm,arr,idioma,animate){ //(formulario, array de campos a validar)
			
			var aux="";
			for(var i=0;i<document.getElementById(frm).elements.length;i++){
       			
				if(document.getElementById(frm).elements[i].type == "hidden"  ||document.getElementById(frm).elements[i].type == "password" || document.getElementById(frm).elements[i].type == "text" || document.getElementById(frm).elements[i].type == "select"  || document.getElementById(frm).elements[i].type == "textarea" || document.getElementById(frm).elements[i].type == "select-one" || document.getElementById(frm).elements[i].type == "select multiple" || document.getElementById(frm).elements[i].type == "select-multiple"){
					if(in_array(arr,document.getElementById(frm).elements[i].id)){ 
						
						if(document.getElementById(frm).elements[i].value==""){
							aux=aux+"\n"+document.getElementById(frm).elements[i].title;
							if(animate==1){
								   jQuery("#"+document.getElementById(frm).elements[i].id).effect("highlight", {color:"red"}, 1000,function(){
								  		jQuery(this).one("click", function(){
											jQuery(this).val("");
										 });
								   });
							 }
	
						}
						else{
							if(document.getElementById(frm).elements[i].id.toLowerCase().indexOf('email')!=-1){
								if(!emailCheck(document.getElementById(frm).elements[i].value)){
									aux=aux+"\n"+document.getElementById(frm).elements[i].title;
									  if(animate==1){
										   jQuery("#"+document.getElementById(frm).elements[i].id).effect("highlight", {color:"red"}, 1000,function(){
										  		jQuery(this).one("click", function(){
													jQuery(this).val("");
												 });
										   });
									   }
								}
							}	
						}
					}
					
				}	
		   }
		  
		   if(aux!=""){
				if(idioma=='es'){
					aux="Debe completar los siguientes campos:" + aux;
				}
				if(idioma=='en'){
					aux="You must complete these fields:" + aux;
				}
			   	if(animate!=1){
			   		alert(aux);
			   	}
				
				return false;
		   }
		   else{
				return true;
		   }	
	}	

	function in_array(mat,field){
			var i;
			for(i=0;i<mat.length;i++){
				if(mat[i].toLowerCase()==field.toLowerCase()){
					return true;
				}	
			}
			return false;	
	}


	function eventTrigger (e) {
	    	if (! e) e = event;
		    return e.target || e.srcElement;
	}
		
	function cancelEvent(e){
			if(navigator.userAgent.indexOf("MSIE")!=-1){
				e.returnValue=0;	
			}
			if(navigator.userAgent.indexOf("Gecko")!=-1){
				e.preventDefault();	
			}
	}
	function validateExtensions(file,ext,evt){
		var auxext=new String(file);
		var extPosibles;
		for (var i=0;i<ext.length;i++){
			if(i==0){
				extPosibles=ext[i];
			}
			else{
				extPosibles += ","+ext[i];
			}
		}
		auxext=auxext.substring(auxext.lastIndexOf('.')+1);
		if(!in_array(ext,auxext)){
			alert ("Slo se admiten las siguientes extensiones: \n"+extPosibles);
			cancelEvent(evt);	
		}
		else{
			return true;	
		}
	
	}
	
	function getMicrotime(){
		var ajax = new MyAjax();
		var micro = "";
		ajax.handleResp=function(resp){
			micro = resp;
		}
		ajax.doSyncRequest("_ajax.php","GET","text",'opc=getMicrotime');
		return micro;
	}
	

	
	
	
	





