/*	Champions: JS functions */

var annoy=true;function debug(m){if(annoy){annoy=confirm(m);};}


function scrollDiv(id,updown,steps,time){// -1:up; 1:down
	var updown=updown?updown:1;var time=time?time:100;var steps=steps?steps:10;
	if(updown==directionScroll){ //process scroll only if there is no conflicting direction
		var divH = $(id).offsetHeight;
		steps--; var scrollStep = Math.floor(divH / steps );var timeStep = Math.round(time / steps );
		var scrolledH=0;
		for(var i=1;i<divH-scrollStep;i+=scrollStep){
			setTimeout('$("'+id+'").scrollTop += '+updown*scrollStep,i*timeStep);
			scrolledH += updown*scrollStep;
		}
		//last scroll, snapping to final position to resolve rounding
		setTimeout('$("'+id+'").scrollTop += '+(updown*divH - scrolledH), i*timeStep );
		//window.status = $(id).scrollTop //debug
	}
}




function rmHelpValue(t){var v=t.value;if(v.indexOf("@example.com")>-1){t.value="";};}

function checkForm(f){
if(!document.getElementById){return;}
var oktosend=true;var fs=f.elements

for(var i=0;i<fs.length;i++){
	if(fs[i].type&&fs[i].name){

	//get field value
	var ftype=fs[i].type;var efilter=false
	if(ftype=="text"||ftype=="textarea"){
		v=fs[i].value
		}else if(ftype=="select-one"||ftype=="select-multiple"){
		v=fs[i][fs[i].selectedIndex].value
		}else if(ftype=="checkbox"){
		v=fs[i].checked
		//alert(v)
		}else{
		v="!"//other types, don't check
		}
		var isfilled=isvalid=(v!="");

	//special fields:
		if(fs[i].name&&fs[i].name.indexOf("mail")>-1){ftype="email";efilter=true;}
		if(efilter){isvalid=isValidField(v,ftype);}

	//is required, or need to check if filled?
	var reqelm=FindTagClassUp(fs[i],".required","form")
	if(!reqelm&&efilter&&isfilled){
		reqelm=FindTagClassUp(fs[i],".field","form");
		if(!reqelm){reqelm=fs[i];}
		}

	if(!isvalid&&reqelm){
		if(oktosend&&(ftype.indexOf("mail")>-1||ftype.indexOf("text")>-1||ftype.indexOf("select")>-1) ){fs[i].select();}
		oktosend=false
		fs[i].onclick=rmErrorClass;/*fs[i].onfocus=rmErrorClass;*/fs[i].onkeydown=rmErrorClass;
		AddClass(reqelm,"error");
	}
	}//end filter fs
}//end for i in fs
return oktosend;
}

function rmErrorClass(event){
var elm=this;var etag=FindTagClassUp(elm,".error","form");if(!etag){etag=FindTagClassUp(elm,".field","form");};if(!etag){etag=elm}
if(etag){KillClass(etag,"error");elm.onclick=null;elm.onfocus=null;elm.onkeyup=null}
}

function isValidField(t,k){
if(k=="email"){
	if( t.indexOf("@example.com")>-1){return false;};
	var emailFilter=/^.+@.+\..{2,}$/;
	var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/
	if(!(emailFilter.test(t))||t.match(illegalChars)){return(false);}else{return (true);}
	return false
	}//end email
}

function resolveCSSpath(e,c){
var e=$(e);
c=c.split(" ");

for(var i=0;i<c.length;i++){
	var cis = c[i].split(":")
	var num = cis[1]?cis[1]:"0"
	var ci=cis[0]

	if(ci=="<"){
		e=e.parentNode;
	}else if(ci.charAt(0)=="#"){
		e=document.getElementById( ci.substring(1) );
		if(!e){return false;};
	}else if(ci.charAt(0)=="."){
	var a=e.childNodes;var t=ci.substring(1);var d=false;
		for(var b=0;b<a.length;b++){
		if(HasClass(a[b],t)){d=a[b];break;};
		};
		if(d){e=d;}else{return false;};
	}else if(ci.charAt(0)=="<"){
		e=FindTagClassUp(e.parentNode,ci.substring(1),"BODY");
		if(!e){return false;};
	}else{
	var a = e.getElementsByTagName( ci.toLowerCase() );
		if(a.length>0){
			if(num=="0"){e=a[0];
			}else if(num=="last"||num>a.length){
			e=a[a.length-1]
			}else{
			e=a[num]
			}
		}else{
			var a = document.getElementsByName(ci);
			if( a[0] ){ e=a[0]; }else{return false;};
		};
	};
	};
	return e;
};

function FindTagClassUp(elm,tcsearch,tclimit){

var tc=(tcsearch+".").split(".");tc[0]=tc[0].toUpperCase();
if(!tclimit){tclimit="BODY";};
var tz=(tclimit+".").split(".");tz[0]=tz[0].toUpperCase();
	while(n=elm.nodeName){
		if(tc[0]==""||n==tc[0]){
			if(tc[1]==""||HasClass(elm,tc[1])){return elm;};};
		if(tz[0]==""||n==tz[0]){
			if(tz[1]==""||HasClass(elm,tz[1])){return false;};};
		elm=elm.parentNode;
	};
	//dump("CANNOT GET NODENAME: ",elm);
	return false;
};


 //prototype $ function
function $(){var elms=new Array();for(var i=0;i<arguments.length;i++){var elm=arguments[i];if(typeof elm=='string'){elm=document.getElementById(elm);};if(arguments.length==1){return elm;};elms.push(elm);};return elms;}

//*** This code is copyright 2002-2003 by Gavin Kistner and Refinery; www.refinery.com
//*** It is covered under the license viewable at http://phrogz.net/JS/_ReuseLicense.txt
function AddClass(obj,cName){KillClass(obj,cName);return obj&&(obj.className+=(obj.className.length>0?' ':'')+cName);}
function KillClass(obj,cName){return obj&&(obj.className=obj.className.replace(new RegExp("^"+cName+"\\b\\s*|\\s*\\b"+cName+"\\b",'g'),''));}
function HasClass(obj,cName){return(!obj||!obj.className)?false:(new RegExp("\\b"+cName+"\\b")).test(obj.className);}

//From http://www.dustindiaz.com/rock-solid-addevent/
function addEvent(obj,type,fn){if(obj.addEventListener){obj.addEventListener(type,fn,false);EventCache.add(obj,type,fn);
}else if(obj.attachEvent){obj["e"+type+fn]=fn;obj[type+fn]=function(){obj["e"+type+fn](window.event);};obj.attachEvent("on"+type,obj[type+fn]);EventCache.add(obj,type,fn);}else{obj["on"+type]=obj["e"+type+fn];};}
var EventCache=function(){var listEvents=[];return{listEvents:listEvents,add:function(node,sEventName,fHandler){listEvents.push(arguments);},flush:function(){var i,item;for(i=listEvents.length-1;i>=0;i=i-1){item=listEvents[i];if(item[0].removeEventListener){item[0].removeEventListener(item[1],item[2],item[3]);};if(item[1].substring(0,2)!="on"){item[1]="on"+item[1];};if(item[0].detachEvent){item[0].detachEvent(item[1],item[2]);};item[0][item[1]]=null;};}};}();addEvent(window,'unload',EventCache.flush);


/* ImageSlides */

function scrollingSlides(h){

	//Cada imagen tiene 172 de ancho, entran 3, si el total es 6 of son
	//esas 3 que quedan
	var off = 172 * 3;
	if (
		(h >= 0 && h <= off && $("SD_slides_body").scrollLeft < off) ||
	    (h >= -off && h <= 0 && $("SD_slides_body").scrollLeft < off + 50)
	   ) {
		$("SD_slides_body").scrollLeft += h;
	}

	//$("SD_slides_body").scrollLeft += h;
}

function scrollSlides(h,gotoSlide){
	var gotoSlide = gotoSlide ? gotoSlide : false;

	//accelerated
	var ci = 0; var ch = 0; var ca = 35;

	while( ch < 172 ){
		setTimeout('scrollingSlides('+(ca*h)+')', 50*ci );
		ch += ca; ca = Math.round(0.8*ca); ci++;
	}

	setTimeout('scrollingSlides('+((172-ch)*h)+')', 50*ci );
	if(gotoSlide){
		var a = false;
		var n = $('SD_slides_body2').getElementsByTagName("a");
		for(var i=0;i<n.length;i++){
			if( HasClass(n[i],"here") ){
				var a = n[i];
				var anum = a.id.replace( /SD_slide_/gi,"")
				var anum2 = parseInt( anum ) + h;
				var a2 = $("SD_slide_"+anum2);
				if( a2 ){
					a.focus(); a.blur();
					a2.onclick();
					break;
				}//end a2
			}//end has class
		}

	}

}

function showSD(what,id,propertytype, beds,location,price){
	var n = $('SD_slides_body2').getElementsByTagName("a");
	for(var i=0;i<n.length;i++){
		KillClass(n[i],"here");
	}

	AddClass(what,"here");
	$('SD_propertytype').innerHTML = propertytype;
	$('SD_moredetails').innerHTML = '<a href="property.php?id='+id+'">Click here to see full details</a>';
	$('SD_beds').innerHTML = beds;
	$('SD_location').innerHTML = '<a href="property.php?id='+id+'">'+location+'</a>';
	$('SD_price').innerHTML = '&pound;'+price+'';

	what.blur();

	return false;
}


function showtrail(imagename,title,width,height){
	i = imagename
	t = title

	$('bigPic').src = i;
}

/* Home UpdateMaxPrice */
function updateMaxPrice(minPrice){

	valores = new Array(
		new Array(50, '&pound;50'),
		new Array(100, '&pound;100'),
		new Array(150, '&pound;150'),
		new Array(200, '&pound;200'),
		new Array(250, '&pound;250'),
		new Array(275, '&pound;275'),
		new Array(300, '&pound;300'),
		new Array(350, '&pound;350'),
		new Array(400, '&pound;400'),
		new Array(450, '&pound;450'),
		new Array(500, '&pound;500'),
		new Array(700, '&pound;700'),
		new Array(900, '&pound;900'),
		new Array(1000, '&pound;1000'),
		new Array(2500, '&pound;2500'),
		new Array(5000, '&pound;5000'),
		new Array(7500, '&pound;7500'),
		new Array(10000, '&pound;10000')
	);

	maxPrice = $('MaxRent');
	maxPrice.length = 0;
	option = new Option('Choose...', '', false, false);
	maxPrice.options[0] = option;

	var j = 1;
	for (var i = 0; i < 18; i++) {
		if (valores[i][0] > minPrice.value) {
			option = new Option(valores[i][1], valores[i][0], false, false);
			maxPrice.options[j] = option;
			maxPrice.options[j].innerHTML = valores[i][1];

			j++;
		}
   }

}


/* Toggle elements */

function toggleElements(){
	if($('radioRentProp').checked){
		$('buyProp').hide();
		new Effect.Appear('rentProp');
	}
	if($('radioBuyProp').checked){
		$('rentProp').hide();
		new Effect.Appear('buyProp');
	}

}


/* Filtro de busqueda */

//Esto al final no se usa
function ajaxUpdateSearch(el){

	if(el.name == 'cboPropertyArea'){
		new Ajax.Updater('cboPropertyRegionDiv',
		                 'ajaxUpdateSearch.php?type=cboPropertyRegion&Area=' + $F('cboPropertyArea'),
		                     {asynchronous:true,
		                      evalScripts:true,
		                      onLoading: function (request) {Element.show('cboPropertyRegionLoading');},
		                      onComplete: function (request){Element.hide('cboPropertyRegionLoading'),new Effect.Highlight('cboPropertyRegion');}
		                     }
                         );
    	new Ajax.Updater('cboPropertyTypeIDDiv',
		                 'ajaxUpdateSearch.php?type=cboPropertyTypeID&Area=' + $F('cboPropertyArea'),
		                     {asynchronous:true,
		                      evalScripts:true,
		                      onLoading: function (request) {Element.show('cboPropertyTypeIDLoading');},
		                      onComplete: function (request){Element.hide('cboPropertyTypeIDLoading'),new Effect.Highlight('cboPropertyTypeID');}
		                     }
                         )
	}

	if(el.name == 'cboPropertyRegion'){
		new Ajax.Updater('cboPropertyTypeIDDiv',
		                 'ajaxUpdateSearch.php?type=cboPropertyTypeID&Address3=' + $F('cboPropertyRegion') + '&Area=' + $F('cboPropertyArea'),
		                     {asynchronous:true,
		                      evalScripts:true,
		                      onLoading: function (request) {Element.show('cboPropertyTypeIDLoading');},
		                      onComplete: function (request){Element.hide('cboPropertyTypeIDLoading'),new Effect.Highlight('cboPropertyTypeID');}
		                     }
                        )
	}

}


/* Improved Select */

function updatePropertyArea(e) {

    if (e.value == ''){
        $('tempArea').value = '';
        cboPropertyAreaLength = $('cboPropertyArea[]').length;
        for (j = 0; j < cboPropertyAreaLength; j++){
            option = $('cboPropertyArea[]').options[j];
            option.selected = false;
        }
    }

    tempArea = $F('tempArea');

    if (tempArea == ''){
        $('tempArea').value = e.value;
    } else {
        repeated = false;

        Areas = tempArea.split('|');

        for (i = 0; i < Areas.length; i++) {
            if (Areas[i] == e.value){
                repeated = true;
            }
        }


        if (repeated){
            Areas2 = new Array();
            j = 0;
            for (i = 0; i < Areas.length; i++) {
                if (Areas[i] != e.value && Areas[i] != ''){
                    Areas2[j] = Areas[i];
                    j++;
                }
            }
           $('tempArea').value = Areas2.join('|');

        } else {
            if (e.value != '') {
                $('tempArea').value = tempArea + '|' + e.value;
            }
        }

        Areas = $('tempArea').value.split('|');

        cboPropertyAreaLength = $('cboPropertyArea[]').length;
        for (j = 0; j < cboPropertyAreaLength; j++){
            option = $('cboPropertyArea[]').options[j];
            option.selected = false;

            for (i = 0; i < Areas.length; i++) {
                if (option.value == Areas[i]) {
                    option.selected = true;
                }
            }
        }
    }



}