var Browser = {
  IE:     !!(window.attachEvent && !window.opera),
  Opera:  !!window.opera,
  WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
  Gecko:  navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1
}

/* hide language selection popup */
document.observe('mousedown', function(e){
  if ($('lang_select').visible() && e.isLeftClick()) {
    if (!$(Event.element(e)).descendantOf($("language"))) {
      $('lang_select').toggle();
    }
  }
});

/* capitalization of strings */
String.prototype.capitalize = function() {
  return this.replace(/\w+/g, function(a) {
    return a.charAt(0).toUpperCase() + a.substr(1).toLowerCase();
  });
};

/* placeholders on inputs for non-safari browsers */
function activatePlaceholders() {
  // safari does it out of the box
  if (Browser.WebKit) return false;
  var inputs = document.getElementsByTagName('input');
  for (var i=0; i<inputs.length; i++) {
    if (inputs[i].getAttribute('placeholder') && inputs[i].getAttribute('placeholder').length > 0) {
      if (inputs[i].value == '') {
        inputs[i].value = inputs[i].getAttribute('placeholder');
      }
      inputs[i].onclick = function() {
        if (this.value == this.getAttribute('placeholder')) {
          this.value = '';
        }
        return false;
      }
      inputs[i].onblur = function() {
        if (this.value.length < 1) this.value = this.getAttribute('placeholder');
      }
    }
  }
}
window.onload=function() {
  activatePlaceholders();
}

/* search functions */
var Search = {
  regionChange: function() {
    $('poi').value = "";
    // creates new POI completer
    updateCompleter();
    activatePlaceholders();
  },
  
  facilities: function() {
    // close
    if ($('facility_list').visible()) {
      $('facility_list').hide();
      $('facilities_toggler').className = 'arrow_closed'
    }
    // open
    else {
      $('facility_list').show();
      $('facilities_toggler').className = 'arrow_open';
    }
  }
}

/* unloads google maps if exists */
function gmapsUnload() {
	if (typeof GUnload==='function') {
		GUnload();
	}
	else
		return true;
}

/* toggles change user picture on user edit */
function toggleChangePicture() {
	if ($('change_picture').visible())
		Effect.Fade('change_picture');
	else
		Effect.Appear('change_picture');
	return false;
}

/* changes a category from a POI */
function changeCategory(id) {
  var select = $('poi_'+id+'_category');
  var cat = select.options[select.selectedIndex].value;
  var opt = {
    method: 'post',
    parameters: "poi_id="+id+"&cat="+cat
  }
  new Ajax.Request("/account/pois/change_category", opt);
}

/* checks all messages for deletion on private messages system */
function checkAll(className) {
	var rows = document.getElementsByClassName(className);
	for (var i=0; i<rows.length; i++) {
		var check = rows[i].childElements()[0];
		check.checked = true;
	}
}

/* unchecks all messages for deletion on private messages system */
function uncheckAll(className) {
	var rows = document.getElementsByClassName(className);
	for (var i=0; i<rows.length; i++) {
		var check = rows[i].childElements()[0];
		check.checked = false;
	}
}

/* returns total number of uploaded images */
function imagesUploaded() {
	// todas as imagens
	images = document.getElementsByClassName("image");
	imageNumber = 0;
	for (i=0; i<images.length; i++) {
		if (images[i].style.display != "none") {
			imageNumber++;
		}
	}
	return imageNumber;
}

/* deletes an image on ad edit */
function deleteImage(id) {
	// esconde a imagem e pode sempre mostrar os uploads
	Element.hide(id);
	Element.show('upload_image');
	
	// nao ha mais imagens
	if (imagesUploaded() == 0)
		Element.hide('edit_image');
}

/* when a new category is added on admin */
function categoryAdded(request) {
  var response = request.responseText.split("^");
  if (response[0] == 'OK') {
    $('pois_category').innerHTML = response[1];
    $('add_category').hide();
  }
  else {
    alert(response[1]);
  }
}