dom={
	getElementsByClass:function(searchClass,node,tag) {
        var classElements = new Array();
        if ( node == null )
            node = document;
        if ( tag == null )
        	tag = '*';
        var els = node.getElementsByTagName(tag);
        var elsLen = els.length;
        var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
        for (i = 0, j = 0; i < elsLen; i++) {
        if ( pattern.test(els[i].className) ) {
            classElements[j] = els[i];
         		j++;
            }
        }
		return classElements;
	}
}

function findChilds(obj,tag){
      var arr=[]; 
      for(var x=0;x<obj.childNodes.length;x++){
	  	if(obj.childNodes[x].tagName){
			if(obj.childNodes[x].tagName.toLowerCase()==tag.toLowerCase()){
				arr[arr.length]=obj.childNodes[x]
			}
		}
      }
      return arr;
}
function doPage(idList, idCurrentItem, idCounter, idPrevious, idNext, itemsPerPage, totalItems, itemStyle, forward){
	var list = document.getElementById(idList);
    var currentItemElement = document.getElementById(idCurrentItem);
    if(idCounter != '')
        var counterElement = document.getElementById(idCounter);
	var previousButton = document.getElementById(idPrevious);
    var previousButtonDisabled = document.getElementById(idPrevious + 'Disabled');
    var nextButton = document.getElementById(idNext);
    var nextButtonDisabled = document.getElementById(idNext + 'Disabled');
    var currentItem = parseInt(currentItemElement.value,10);
    var futureItem;
    //Se calcula el item al que se dirige la paginación (adelante o atrás)
    if(forward)
        futureItem = currentItem + itemsPerPage;
    else
        futureItem = currentItem - itemsPerPage;
    //var listItems = list.childNodes;
	var listItems=findChilds(list,"li");
	var hideTargetItem;
    var showTargetItem;
	for (var j=0;j<listItems.length;j++) { listItems[j].style.display = "none";}
	//Si el item al que se dirige la paginación es un item válido, se pagina
	if(futureItem >= 0 && futureItem < totalItems){
        currentItemElement.value = futureItem;
		//Se muestran/ocultan los items correspondientes según los items por página
		for(i=0;i<itemsPerPage;i++){
            hideTargetItem = currentItem + i;
            showTargetItem = futureItem + i;
			if(showTargetItem >= 0 && showTargetItem < totalItems) listItems[showTargetItem].style.display = itemStyle;
			//if(hideTargetItem >= 0 && hideTargetItem < totalItems) listItems[hideTargetItem].style.display = "none";
        }
        //Muestra/oculta los botones "anterior" y "siguiente"
        if(futureItem > 0){
            previousButton.style.display = "inline";
            previousButtonDisabled.style.display = "none";
            }
        else{
            previousButton.style.display = "none";
            previousButtonDisabled.style.display = "inline";
            }
        if(futureItem + itemsPerPage < totalItems){
            nextButton.style.display = "inline";
            nextButtonDisabled.style.display = "none";
            }
        else{
            nextButton.style.display = "none";
            nextButtonDisabled.style.display = "inline";
            }
    }
    
    if(idCounter != ''){
        //Se muestra el valor de la página actual
        counterElement.innerHTML  = (parseInt(currentItemElement.value,10) / itemsPerPage) + 1;
	}
};

//Añadir a favoritos
function addBookmark(title, url){
  if(window.sidebar){window.sidebar.addPanel(title, url,'');} //FF
  else if(document.all){window.external.AddFavorite(url, title);} //IE
}

/* ImporCSS */
function ImportCSS() {
	var nbr_att = arguments.length;
	var css_style=document.createElement("link");
	css_style.setAttribute("rel", "stylesheet");
	css_style.setAttribute("type", "text/css");
	css_style.setAttribute("href", arguments[0]);
	css_style.setAttribute("media", "screen");
	if(nbr_att>1){
		for (var i = 1; i<nbr_att; i++){
			css_style.setAttribute(arguments[i][0], arguments[i][1]);
		}
	}
	document.getElementsByTagName("head")[0].appendChild(css_style);
}
/* Fin ImporCSS */


/* Toogles */
function acctoggle(toggleElement,slideElement){
	//console.log(toggleElement, slideElement);
	var oldtoggletext = toggleElement.getText();
	//var open = toggleElement.hasClass('open');
	//console.log(open);
	var newa = new Element('a', {
    'href': 'javascript:void(0);'
	});
	newa.setHTML(oldtoggletext);
	toggleElement.empty();
	newa.injectInside(toggleElement);	
	var mySlide = new Fx.Slide(slideElement);  
	newa.addEvent('click', function(e){
		e = new Event(e);
		/* Mo se cierra si tiene un mapa dentro abierto */
		if($E('a.buttonMap', slideElement) != null && slideElement.getStyle('marginTop').toInt() >= 0 && $('contentMap').getStyle('marginLeft').toInt() >= 0) {
			return;
		}
		mySlide.toggle();
		newa.toggleClass('jsclosed');
		e.stop();
	});
	if (!toggleElement.hasClass('open')) mySlide.hide();
	else newa.toggleClass('jsclosed');
};
/* Fin Toogles */
/* SortableTables */
function insertspan(el){
	var thText = el.getText();
	var newspan = new Element('span');
	newspan.setHTML(thText);
	el.empty();
	el.adopt(newspan);
};

function initsortableTable(tables) {
	tables.each(function(el,i){
		var variable = "table" + i;
		var variable = new sortableTable(el.id, {overCls: 'select'});
		el.getElement('thead').getElements('th').each(function(elChild,i){
			if(elChild.axis){insertspan(elChild);}
		});
	});
};
/* Fin SortableTables */
/* Tooltips */
function tooltips(){
	var jstips = $$('.jstips');
	var Tips2 = new Tips(jstips, {
		initialize:function(){
			this.fx = new Fx.Style(this.toolTip, 'opacity', {duration: 500, wait: false}).set(0);
		},
		onShow: function(toolTip) {
			this.fx.start(1);
		},
		onHide: function(toolTip) {
			this.fx.start(0);
		}
	})
	if (window.ie) jstips.removeProperty('alt');
};
/* Fin Tooltips */
/* Mapa */
function selectArea(localidad){
	$$('#searchBox label.zone option').each(function(el, count) {
		if (el.getProperty('value') == localidad) 
		{
			$$('#searchBox label.zone select option')[count].selected = true;
			var sel = document.getElementsByTagName('select')[0];
			sel.focus();
		}
		}
		);
}
function addMap(){
/*if (arguments[0] == 'close') {
	buttonMap.slideIn();
	alert('cerrar');
	return;
};*/
ImportCSS('/Style Library/TM/map.css');

var containerMap = new Element('div', {
	'id': 'containerMap'
});

var buttonMap = new Element('a', {
  'href':'javascript:void(0);',
  'id':'buttonMap',
  'class':'buttonMap ftl'
});
var contentMap = new Element('div', {
	'id':'contentMap'
});
var mapOptions = new Element('ul', {
	'id':'mapOptions'
});
var mapOptionsLi = new Element('li');
var map = new Element('img', {
	'src':'/PublishingImages/mapSpain.gif',
	'id':'map'
});
var buttonSpain = new Element('a', {
  'href':'javascript:void(0);'
});
var buttonMexico = new Element('a', {
  'href':'javascript:void(0);'
});
var buttonClose = new Element('a', {
  'href':'javascript:void(0);'
});
var mapImg = new Element('map', {
  'name':'mapimg'
});
var mapMex = new Element('map', {
  'name':'mapMex'
});

mapImg.setHTML('<area shape="poly" class="jstips" coords="91,62,151,63,147,81,137,82,131,75,93,74" href="#Castellón" title="Castellon" /><area shape="poly" class="jstips" coords="164,71,221,71,215,83,197,84,198,92,191,94,188,85,162,82" href="#Mallorca" title="Mallorca" /><area shape="poly" class="jstips" coords="129,105,140,108,151,112,191,113,193,123,144,122,131,113" href="#Alicante" title="Alicante" /><area shape="poly" class="jstips" coords="126,121,138,127,176,131,174,140,135,139,126,131" href="#Murcia" title="Murcia" /><area shape="poly" class="jstips" coords="104,138,118,137,120,148,132,152,154,150,156,158,115,159" href="#Almería" title="Almería" /><area shape="poly" class="jstips" coords="80,80,131,82,137,88,140,98,110,90,84,93,83,89" href="#Valencia" title="Valencia" />');
mapMex.setHTML('<area shape="rect" class="jstips" coords="0,0,227,168" href="#México" title="México" />');

buttonMexico.appendText('México');
buttonMexico.injectTop(mapOptionsLi);
mapOptionsLi.injectInside(mapOptions);

var liclone = mapOptionsLi.clone(false).injectBefore(mapOptionsLi);
liclone.set({'class':'select'});
var liclone2 = mapOptionsLi.clone(false).injectAfter(mapOptionsLi);
liclone2.set({'class':'ftr close'});

buttonSpain.appendText('España');
buttonSpain.injectInside(liclone);	

buttonClose.appendText('Cerrar x');
buttonClose.injectInside(liclone2);

mapOptionsLi.injectInside(mapOptions);
mapOptions.injectInside(contentMap);
map.injectInside(contentMap);
mapImg.injectInside(contentMap);
mapMex.injectInside(contentMap);
buttonMap.appendText('Mapa');
contentMap.injectInside(containerMap);

//$E('#searchBox label.zone').setStyle('width', '145px');
$E('#searchBox label.zone').setStyles({
	'width': '145px',
	'margin-right': '8px'
});
buttonMap.injectAfter($E('#searchBox label.zone'));

//containerMap.set({'styles': {'left' : buttonMap.getLeft() + buttonMap.getStyle('width').toInt() + buttonMap.getStyle('paddingLeft').toInt() + buttonMap.getStyle('paddingRight').toInt(), 'top' : buttonMap.getTop()}});
containerMap.injectInside(document.body);
//Esta linea es necesaria, si no funciona en IE
$('map').setAttribute("usemap", "#mapimg", 0);
$$('map area.jstips').addEvent('click', function(e){
	e = new Event(e).stop();
	selectArea($(this).getProperty('href').split('#')[1]);
	/* [*1]Ahora no se quiere que se oculte el mapa. Descomentar para que se oculte. Comentar entonces el [*2]
	mapSlide.slideOut();
	buttonMap.toggleClass('toggle');
	myFx = new Fx.Style(contentMap, 'opacity').start(1,0);*/
});

var mapSlide = new Fx.Slide(contentMap, {mode: 'horizontal'}); 
buttonMap.addEvent('click', function(e){
	e = new Event(e);
	containerMap.set({'styles': {'left' : buttonMap.getLeft() + buttonMap.getStyle('width').toInt() + buttonMap.getStyle('paddingLeft').toInt() + buttonMap.getStyle('paddingRight').toInt(), 'top' : buttonMap.getTop()}});
	
	if (contentMap.getStyle('marginLeft').toInt() < 0) var myFx = new Fx.Style(contentMap, 'opacity').start(0,1);
	else var myFx = new Fx.Style(contentMap, 'opacity').start(1,0);	
	
	mapSlide.toggle();
	buttonMap.toggleClass('toggle');
	e.stop();
});
/*
$E('div.slidedown h2').addEvent('click', function(e){
	if (contentMap.getStyle('marginLeft').toInt() >= 0){
		mapSlide.slideOut();
		buttonMap.toggleClass('toggle');
		myFx = new Fx.Style(contentMap, 'opacity').start(1,0);
	}
});

$E('#searchBox label.zone select').addEvent('change', function(e){
	if (contentMap.getStyle('marginLeft').toInt() >= 0){
		mapSlide.slideOut();
		buttonMap.toggleClass('toggle');
		myFx = new Fx.Style(contentMap, 'opacity').start(1,0);
	}
});

buttonClose.addEvent('click', function(e){
	mapSlide.slideOut();
	buttonMap.toggleClass('toggle');
	myFx = new Fx.Style(contentMap, 'opacity').start(1,0);
});*/

/* Ahora no se quiere que se oculte el mapa. Descomentar para que se oculte
$E('#searchBox label.zone select').addEvent('change', function(e){
	if (contentMap.getStyle('marginLeft').toInt() >= 0){
		mapSlide.slideOut();
		buttonMap.toggleClass('toggle');
		myFx = new Fx.Style(contentMap, 'opacity').start(1,0);
	}
});

$$('div.slidedown h2', buttonClose).addEvent('click', function(e){
	if (contentMap.getStyle('marginLeft').toInt() >= 0){
		mapSlide.slideOut();
		buttonMap.toggleClass('toggle');
		myFx = new Fx.Style(contentMap, 'opacity').start(1,0);
	}
});*/

//[*2]Este evento se debe quitar si se descomentan los eventos del [*1]
buttonClose.addEvent('click', function(e){
	if (contentMap.getStyle('marginLeft').toInt() >= 0){
		mapSlide.slideOut();
		buttonMap.toggleClass('toggle');
		myFx = new Fx.Style(contentMap, 'opacity').start(1,0);
    }
});

buttonMexico.addEvent('click', function(e){
	if (!mapOptionsLi.hasClass('select')) {
		map.set({'src':'/PublishingImages/mapMexico.gif'});
		mapOptionsLi.toggleClass('select');
		liclone.toggleClass('select');
		$('map').setAttribute("usemap", "#mapMex", 0);
	}
});
buttonSpain.addEvent('click', function(e){
	if (!liclone.hasClass('select')) {
		map.set({'src':'/PublishingImages/mapSpain.gif'});
		mapOptionsLi.toggleClass('select');
		liclone.toggleClass('select');
		$('map').setAttribute("usemap", "#mapimg", 0);
	}
});
mapSlide.hide();

};
/* Fin Mapa*/

var view = {
	hHeight:200,
	fHeight:function(obj){
		for (var i=0; i<obj[0].childNodes.length; i++){
			if (obj[0].childNodes[i].tagName == "UL"){
				obj[0].childNodes[i].style.height=view.hHeight+"px";
			}
		}
	}
}
/* Al iniciar */
function init(){
	/* Compruebo si existen desplegables y que no estan en la home */
	var contSlide = ($$('div.slidedown') != '');
	if (contSlide && !($('content').hasClass('home'))) {
		var tElement = $E('div.slidedown h2', contSlide);
		var sElement = $E('div.slidedown div.slide', contSlide);
		acctoggle(tElement, sElement);
		tElement.addClass('js');
	};
	
	//Viviendas destacadas / Ultimas promociones
	if (($('content').hasClass('home'))) {
		var elements = dom.getElementsByClass("elements1"); view.fHeight(elements);
		var elements2 = dom.getElementsByClass("elements2"); view.fHeight(elements2);
	}
	/* Compruebso si existen mapas */
	if ($$('div.jsmap') != '') addMap();
	/* Compruebo si existen tooltips */
	if ($$('.jstips') != '') tooltips();
	/* Compruebo si existen sortableTables */
	var tables = $$('table.sortableTable');
	if (tables != '') initsortableTable(tables);
};

if(window.addEvent != undefined)
	window.addEvent('domready',init);
