// JavaScript Document
$(document).ready(function() {
		
		/* START ROLLOVER */
		var cache = [];
		
		$("img.roll, input.roll, img.preload").each(function() {
			//let's preload
			var cacheImage = document.createElement('img');
			cacheImage.src = this.src.replace(/_off([_\.])/, '_on$1');
			cache.push(cacheImage);
		});
														 
		$("img.roll, input.roll").hover(function(){
			//alert(this.src);
			this.src=this.src.replace(/_off([_\.])/, '_on$1');
		},
		function(){
			this.src=this.src.replace(/_on([_\.])/, '_off$1');
		});
		
		$("img.bt_img_faded").each(function() {
			$(this).fadeTo('fast', 0.4);
		});
			
		
		// UI Elements
			// top search
			$('#search_region').selectmenu({style:'dropdown', width:180, maxHeight: 150});
			$('#search_type').selectmenu({style:'dropdown', width:180, maxHeight: 150});
			$('#search_price').selectmenu({style:'dropdown', width:160, maxHeight: 150});
			$('#search_courtiers').selectmenu({style:'dropdown', width:180, maxHeight: 150});
			$('#search_sia').addClass('ui-widget ui-state-default ui-corner-all ui-input');
			$('#search_sia').blur(function() {
				if ($('#search_sia').val() == '') $('#search_sia').val('# SIA');
			});
			$('#search_sia').focus(function() {
				if ($('#search_sia').val() == '# SIA') $('#search_sia').val('');
			});
			$( "#search_sia" ).autocomplete({
				//source: 
				source: function(request, response) {
					var filteredArray = $.map(searchSIA, function(item) {
							//alert(request.term);
							/*alert(item);*/
							
							if( item.startsWith(request.term)){
									return item;
							}
							else{
									return null;
							}
					});
					response(filteredArray);
				}
			});
			
			// list
			$('#results_sort_list').selectmenu({style:'dropdown', width:180, maxHeight: 150});
			$('#results_sort_list_bottom').selectmenu({style:'dropdown', width:180, maxHeight: 150});
		
			// Calculator fields
			$('#calculator_deposit').addClass('ui-widget ui-state-default ui-corner-all ui-input');
			$('#calculator_loan').addClass('ui-widget ui-state-default ui-corner-all ui-input');
			$('#calculator_interest').addClass('ui-widget ui-state-default ui-corner-all ui-input');
			$('#calculator_duration').selectmenu({style:'dropdown', width:50, maxHeight: 150});
			$('#calculator_frequency').selectmenu({style:'dropdown', width:125,  maxHeight: 150});
				

			// HOME SLIDER
			//$('#property_slider_content').bxSlider({auto: true, pause: 4000, controls: false, pager:true, pagerSelector: $('div.property_nav_wrapper div.nav'), pagerActiveClass: 'selected'});
			var home_slider = $('#slider_pub').bxSlider({auto: true, pause: 4000, controls: false, pager:false, 
				onBeforeSlide: function(currentSlideNumber, totalSlideQty, currentSlideHtmlObject) {
					for(var i=0; i<totalSlideQty; i++) {
						if (i == currentSlideNumber) {
							$('#slide_img_'+currentSlideNumber).attr('src', $('#slide_img_'+currentSlideNumber).attr('src').replace(/_off([_\.])/, '_on$1'));
						} else {
							$('#slide_img_'+i).attr('src', $('#slide_img_'+i).attr('src').replace(/_on([_\.])/, '_off$1'));
						}
					}
				}
			});
			
			$('#home-slider-prev').click(function(){
				home_slider.goToPreviousSlide();
				return false;
			});
		
			$('#home-slider-next').click(function(){
				home_slider.goToNextSlide();
				return false;
			});
			$('a.slide_page').click(function(){
				//alert($(this).attr('id'));
				slidenum = $(this).attr('id').replace("slide_page_","");
				home_slider.goToSlide(slidenum);
				return false;
			});
			
		
			// DETAILS SLIDER
			if($('#propertydetails_pics_slider').find('li').length > 1) {
				var propertydetails_thumbs_slider = $('#propertydetails_pics_slider').bxSlider({
							auto: true, 
							pause: 5000, 
							controls: false, 
							pagerActiveClass: 'pager-active',
							onAfterSlide: function(currentSlideNumber, totalSlideQty, currentSlideHtmlObject) {
								$('#propertydetails_thumbs_wrapper a').removeClass('pager-active');
								$('#propertydetails_thumbs_wrapper a:eq('+currentSlideNumber+')').addClass('pager-active');
								$('#propertydetails_thumbs_wrapper').trigger('gotoSlide',[(currentSlideNumber)]);
							}
				});
				$('#propertydetails_thumbs_wrapper a').click(function(){
					var thumbIndex = $('#propertydetails_thumbs_wrapper a').index(this);
					propertydetails_thumbs_slider.goToSlide(thumbIndex);
					$('#propertydetails_thumbs_wrapper a').removeClass('pager-active');
					$(this).addClass('pager-active');
					return false;
				});
				$('#propertydetails_thumbs_wrapper a:first').addClass('pager-active');
			}
			// DETAILS THUMBS SLIDER
			if($('#propertydetails_thumbs_wrapper').length) {
					var pos = 0;
					var offset = 94;		// HOW MUCH TO MOVE
					var currentslide = 1;
					var visibleSlides = 5;
					var items = $('#propertydetails_thumbs_wrapper');
					var numSlides = $('#propertydetails_thumbs_wrapper > li').size();
					var btPrev = $('#propertydetails_thumbs_prev');
					var imgPrev = $('#propertydetails_thumbs_previmg');
					var btNext = $('#propertydetails_thumbs_next');
					var imgNext = $('#propertydetails_thumbs_nextimg');
					
					items.bind('gotoSlide', function(e, i) {
						if (i>numSlides && i < 0) {
							 return false;
						}
						
						currentslide = i+1;
						if (numSlides > visibleSlides) {
							if(currentslide-1+(visibleSlides) >= numSlides) {
								pos = -1*(offset*(numSlides-visibleSlides));
							} else {
								pos = -1*(offset*(currentslide-1));
							}
						} else {
							pos = 0;
						}
						items.animate({
								marginLeft: pos
							}, 500 );
						if(currentslide < numSlides && imgNext.css('opacity') != 1) imgNext.animate({opacity: 1},500); // make next visible
						if(currentslide == 1) imgPrev.animate({opacity: .4},500); // make prev invisible
						if(currentslide > 1) imgPrev.animate({opacity: 1},500); // make prev visible
						if(currentslide+(visibleSlides) >= numSlides) imgNext.animate({opacity: .4},500); // make next invisible
					});
					
					btPrev.click(function() {
						propertydetails_thumbs_slider.stopShow();
						if(currentslide == 1) return false;
						
						if (currentslide - visibleSlides < 1) {
							currentslide = 1;
						} else {
							currentslide = currentslide-visibleSlides;
						}
						
						if(currentslide-1+(visibleSlides) >= numSlides) {
							pos = -1*(offset*(numSlides-visibleSlides));
						} else {
							pos = -1*(offset*(currentslide-1));
						}
						
						items.animate({
								marginLeft: pos
							}, 500 );
						
						if(currentslide < numSlides && imgNext.css('opacity') != 1) imgNext.animate({opacity: 1},500); // make next visible
						if(currentslide == 1) imgPrev.animate({opacity: .4},500); // make prev invisible
					})
					
					btNext.click(function() {
						propertydetails_thumbs_slider.stopShow();
						if(currentslide+(visibleSlides-1) >= numSlides) return;
	
						if (currentslide + visibleSlides >= numSlides) {
							currentslide = numSlides-visibleSlides;
						} else {
							currentslide = currentslide+visibleSlides;
						}
	
						if(currentslide+(visibleSlides) > numSlides) {		
							pos = -1*(offset*(numSlides-visibleSlides));
						} else {
							pos = -1*(offset*(currentslide));
						}
						
						items.animate({
								marginLeft: pos
							}, 500 );
						if(currentslide > 1  && imgPrev.css('opacity') != 1) imgPrev.animate({opacity: 1},500); // make prev visible
						if(currentslide+(visibleSlides) >= numSlides) imgNext.animate({opacity: .4},500); // make next invisible
					})
					
					imgPrev.animate({opacity: .4},500);// make prev invisible
					if (currentslide+(visibleSlides-1) >= numSlides) imgNext.animate({opacity: .4},500);// make next invisible
			 }
		
	
		
		
		
});


// CALCULATE MORTGAGE PAYMENTS
function r (taux_interet, frequence) {
	var r1 = taux_interet/2;
	var r2 = Math.pow((1+r1), 2) - 1;
	var r3 = Math.pow((1+r2), (1/frequence)) - 1;
	return r3;
}

function a (duree, r) {
	var a = (1 - Math.pow((1+r), (-1*duree))) / r;
	return a;
}

function calculez(dec) {
	var paiement_mensuel = 0;
	var valeur = $('#calculator_value').val();
	var emprunt = $('#calculator_loan').val();
	var taux_interet = $('#calculator_interest').val().replace(/,/, '.') / 100;
	var frequence = $('#calculator_frequency').val();
	var duree = $('#calculator_duration').val();
	
	if (emprunt > 0) {
		if (isValidDec(emprunt) == false) {
			return false;
		}
	}
	
	if (taux_interet > 0) { 
		if (isValidDec(taux_interet) == false) {
			return false;
		}
	}

	if (duree < 1 || duree >= "a") {
		alert("La durée doit être spécifiée (en années).");
	}	
	
	if (frequence == 12) {
		paiement_mensuel = emprunt/a(duree*frequence,r(taux_interet,frequence));
	} else if (frequence == 24) {
		paiement_mensuel = emprunt/a(duree*frequence,r(taux_interet,frequence));
	} else if (frequence == 26) {
		paiement_mensuel = (emprunt/a(duree*12,r(taux_interet,12)))/2.1666666;
	} else if (frequence == 52) {
		paiement_mensuel = (emprunt/a(duree*12,r(taux_interet,12)))/4.3333333;
	}
	if (!isNaN(paiement_mensuel)) {
		paiement_mensuel =  Math.round(paiement_mensuel*100) / 100;
		$('#calculator_payment').text(checkDecimals(paiement_mensuel).replace('.', dec)+'$');
	}
}

function checkDecimals(mnt) {
	var mnt = ""+mnt;
	var mntlength = mnt.length;
	var pos =  mnt.indexOf('.');
	if (pos == -1) 
	{
		mnt += ".00";
	} 
	else if ( mntlength - pos == 2) 
	{
		 mnt += "0";
	} 
	else if (mntlength - pos == 0) 
	{
							mnt += "00";
	} 
	return mnt;
}

function isValidNum(fieldValue)
{
		if(fieldValue.value.search(/^[-]?[^0-9 ]*$/) == -1)
		{
				return (false);
		}

		return (true);
}


function isValidDec(fieldValue)
{	
	return /^[-+]?[0-9]+(\.[0-9]+)?$/.test(fieldValue);
				
}
// END CALCULATE MORTGAGE PAYMENTS


function switchLang() {
	currentURL = window.location.href;
	
	if(currentURL.indexOf('_e.') > -1) {
		location.href=currentURL.replace("_e.", "_f.");
	} else if(currentURL.indexOf('_f.') > -1) {
		location.href=currentURL.replace("_f.", "_e.");
	}
}


// Prototype functions
String.prototype.startsWith = function(prefix) {
  return (this.substr(0, prefix.length) === prefix);
}

String.prototype.endsWith = function (suffix) {
  return (this.substr(this.length - suffix.length) === suffix);
}
