
/* - general.js - */
function changeImage(url) {
  var img = document.getElementById("main-image");
  img.src = url;
}

function initMenu() {
  var menu = document.getElementById("menu");
  var lst = menu.getElementsByTagName("img");
  for (i = 0;i < lst.length;i++) {
    lst[i].onmouseover = swapImage;
    lst[i].onmouseout = swapImage;
  }
  lst = document.getElementsByName("swap")
  for (i = 0;i < lst.length;i++) {
    lst[i].onmouseover = swapImage;
    lst[i].onmouseout = swapImage;
  }
}
	
registerPloneFunction(initMenu);

function swapImage() {
  url = this.src;
  if (url.substr(url.length - 7,7) == "_on.jpg") {
    url = url.substr(0,url.length - 7) + ".jpg";
  } else {
    url = url.substr(0,url.length - 4) + "_on.jpg";
  }
  this.src = url;
}

var Class = {
	create: function() {
		return function() {
			this.initialize.apply(this, arguments);
		}
	}
}

Object.extend = function(destination, source) {
	for (property in source) destination[property] = source[property];
	return destination;
}

Function.prototype.bind = function(object) {
	var __method = this;
	return function() {
		return __method.apply(object, arguments);
	}
}

Function.prototype.bindAsEventListener = function(object) {
var __method = this;
	return function(event) {
		__method.call(object, event || window.event);
	}
}

function $() {
	if (arguments.length == 1) return get$(arguments[0]);
	var elements = [];
	$c(arguments).each(function(el){
		elements.push(get$(el));
	});
	return elements;

	function get$(el){
		if (typeof el == 'string') el = document.getElementById(el);
		return el;
	}
}

if (!window.Element) var Element = new Object();

Object.extend(Element, {
	remove: function(element) {
		element = $(element);
		element.parentNode.removeChild(element);
	},

	hasClassName: function(element, className) {
		element = $(element);
		if (!element) return;
		var hasClass = false;
		element.className.split(' ').each(function(cn){
			if (cn == className) hasClass = true;
		});
		return hasClass;
	},

	addClassName: function(element, className) {
		element = $(element);
		Element.removeClassName(element, className);
		element.className += ' ' + className;
	},
  
	removeClassName: function(element, className) {
		element = $(element);
		if (!element) return;
		var newClassName = '';
		element.className.split(' ').each(function(cn, i){
			if (cn != className){
				if (i > 0) newClassName += ' ';
				newClassName += cn;
			}
		});
		element.className = newClassName;
	},

	cleanWhitespace: function(element) {
		element = $(element);
		$c(element.childNodes).each(function(node){
			if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) Element.remove(node);
		});
	},

	find: function(element, what) {
		element = $(element)[what];
		while (element.nodeType != 1) element = element[what];
		return element;
	}
});

var Position = {
	cumulativeOffset: function(element) {
		var valueT = 0, valueL = 0;
		do {
			valueT += element.offsetTop  || 0;
			valueL += element.offsetLeft || 0;
			element = element.offsetParent;
		} while (element);
		return [valueL, valueT];
	}
};

document.getElementsByClassName = function(className) {
	var children = document.getElementsByTagName('*') || document.all;
	var elements = [];
	$c(children).each(function(child){
		if (Element.hasClassName(child, className)) elements.push(child);
	});  
	return elements;
}

//useful array functions
Array.prototype.iterate = function(func){
	for(var i=0;i<this.length;i++) func(this[i], i);
}
if (!Array.prototype.each) Array.prototype.each = Array.prototype.iterate;

function $c(array){
  var nArray = [];
  for (var i=0;i<array.length;i++) nArray.push(array[i]);
  return nArray;
}

function showDropDown() {
  ul = this.getElementsByTagName("ul");
  ul[0].style.display = "block";
}

function hideDropDown() {
  ul = this.getElementsByTagName("ul");
  ul[0].style.display = "none";
}

function updateDropDown() {
  updateValueDropDown(this);
}

function updateValueDropDown(obj) {
  var lst = document.getElementsByName(obj.name);
  value = "";
  nbOn = 0;
  for (var i = 0;i < lst.length; i++) {
    if (lst[i].checked) {
      if (value.length > 0) {value += ", ";}
      value += lst[i].value;
      nbOn++;
    }
  }
  name = obj.name.substring(0,obj.name.indexOf(':'));
  obj = document.getElementById(name + "_value");
  if (value == "" || nbOn == lst.length) {value = obj.getAttribute('all_value');}
  obj.innerHTML = value;
}

function liOver() {
  this.style.backgroundColor = "#E3EEF3";
}

function liOut() {
  this.style.backgroundColor = "white";
}

function liClick() {
  input = this.getElementsByTagName("input")[0];
  input.checked = ! input.checked;
  updateValueDropDown(input);
}

function initDropDown() {
  var lst = document.getElementsByClassName("dropdown");
  var tbv = document.getElementById("type_bien_value");
  if (tbv != null) {
    document.getElementById("type_bien_value").setAttribute('all_value','Tous les types');
    document.getElementById("secteur_value").setAttribute('all_value','Toutes les villes');
  }
  for (var i = 0;i < lst.length;i++) {
    elt = lst[i];
    elt.onmouseover = showDropDown;
    elt.onmouseout = hideDropDown;
    lstchk = elt.getElementsByTagName("input");
    for (var j=0;j < lstchk.length;j++) {
      chk = lstchk[j];
      chk.onclick = updateDropDown;
    }
    
    lstli = elt.getElementsByTagName("li");
    for (var j=0;j < lstli.length;j++) {
      li = lstli[j];
      li.onclick = liClick;
      li.onmouseover = liOver;
      li.onmouseout = liOut;
    }
    
    if (lstchk.length > 0) {
      updateValueDropDown(lstchk[0]);
    }
  }
}

registerPloneFunction(initDropDown);

function updateInputNombre() {
  val = this.value.replace(/\s/g,'');
  val = val.replace(/\./,',');
  dec = "";
  indVirg = val.indexOf(',');
  if (indVirg > 0) {
    dec = val.substring(indVirg+1,val.length);
    val = val.substring(0,indVirg);
  }
  res = "";
  if (val.length < 4 || isNaN(parseInt(val))) {
    res = val;  
  } else {
    offset = val.length % 3;
    if (offset > 0) {
      res = val.substring(0,offset) + " ";
    }
    for (i = offset;i < val.length;i = i + 3) {
      res += val.substring(i,i+3);
      if (i+3 < val.length) {res += " ";}
    }
  }
  if (indVirg > 0) {res += "," + dec;}
  this.value = res;
}

function initInputNombre() {
  lst = document.getElementsByClassName("nombre");
  for (i = 0;i < lst.length;i++) {
    elt = lst[i];
    elt.onkeyup = updateInputNombre;
  
  }
}

registerPloneFunction(initInputNombre);


