281 lines
No EOL
6.8 KiB
JavaScript
281 lines
No EOL
6.8 KiB
JavaScript
/** ********************************************** **
|
||
@REALESTATE PACK DEMO [usage example]
|
||
pack-realestate-*.html
|
||
*************************************************** **/
|
||
var googleMapKey = "AIzaSyCqCn84CgZN6o1Xc3P4dM657HIxkX3jzPY";
|
||
|
||
jQuery(document).ready(function() {
|
||
|
||
_init_();
|
||
|
||
});
|
||
|
||
|
||
|
||
/** _init_()
|
||
******************************* **/
|
||
function _init_() {
|
||
|
||
|
||
|
||
/* LIST MODE
|
||
pack-realestate-property-list-1.html
|
||
pack-realestate-property-list-2.html
|
||
*********************************** */
|
||
window._lastClass = null;
|
||
jQuery('div.property-list-opt .property-list-btn>a').bind("click", function(e) {
|
||
e.preventDefault();
|
||
|
||
var _t = jQuery(this),
|
||
_class = _t.attr('data-class') || null;
|
||
|
||
|
||
|
||
|
||
if(window._lastClass == null) {
|
||
|
||
if(_class != null && _class != 'property-item-box') {
|
||
|
||
window._lastClass = _class;
|
||
|
||
} else {
|
||
|
||
window._lastClass = 'col-xs-12 col-md-4'; // fail safe
|
||
|
||
}
|
||
|
||
}
|
||
|
||
|
||
jQuery('div.property-list-opt .property-list-btn>a').removeClass('active');
|
||
_t.addClass('active');
|
||
|
||
if(_class != 'property-item-box') {
|
||
|
||
jQuery('div.property-item-list div.property-item').removeClass('property-item-box').parent().removeClass('col-md-6 col-md-5 col-md-4 col-md-3 col-md-2 col-lg-6 col-lg-5 col-lg-4 col-lg-3 col-lg-2');
|
||
|
||
// add to cookie (for php use if needed)
|
||
_setCookie('property-list-mode','unboxed', 30); // in days
|
||
|
||
} else {
|
||
|
||
jQuery('div.property-item-list div.property-item').addClass('property-item-box');
|
||
jQuery('div.property-item-list>div').addClass(window._lastClass);
|
||
|
||
// add to cookie (for php use if needed)
|
||
_setCookie('property-list-mode','boxed', 30); // in days
|
||
}
|
||
|
||
});
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/* SAVE BUTTON
|
||
pack-realestate-property-item.html
|
||
*********************************** */
|
||
jQuery("#restate-save").bind('click', function(e) {
|
||
e.preventDefault();
|
||
|
||
var _this = jQuery(this),
|
||
_href = _this.attr('href');
|
||
|
||
|
||
jQuery.ajax({
|
||
url : _href,
|
||
dataType : 'html',
|
||
type : 'POST',
|
||
cache : true, // warning: this will cause a timestamp and will call the request twice
|
||
async : true,
|
||
|
||
beforeSend : function() {
|
||
|
||
jQuery('i', _this).toggleClass('fa fa-heart-o , fa fa-cog fa-spin');
|
||
|
||
},
|
||
|
||
success : function(data) {
|
||
|
||
_toastr("Successfully Saved!",'top-right',"success",false);
|
||
jQuery('i', _this).toggleClass('fa fa-heart-o , fa fa-cog fa-spin');
|
||
|
||
},
|
||
|
||
complete: function(){},
|
||
|
||
// 404 ERROR MESSAGE
|
||
error : function(xhr, ajaxOptions, thrownError) {
|
||
|
||
_toastr("ERROR: Please try again later!",'top-right',"error",false);
|
||
jQuery('i', _this).toggleClass('fa fa-heart-o , fa fa-cog fa-spin');
|
||
|
||
}
|
||
});
|
||
|
||
|
||
});
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/* FULLSCREEN GOOGLE MAP
|
||
pack-realestate-property-item.html
|
||
*********************************** */
|
||
jQuery("a.togglemap").bind('click', function(e) {
|
||
e.preventDefault();
|
||
|
||
// get latitude and longitude
|
||
var _lat = jQuery(this).attr('data-lat') || 0,
|
||
_lng = jQuery(this).attr('data-lng') || 0;
|
||
|
||
// load scripts first
|
||
loadScript('//maps.google.com/maps/api/js?key=' + googleMapKey, function() {
|
||
loadScript(plugin_path + 'gmaps.js', function() {
|
||
|
||
// show map & init
|
||
jQuery("#map-fullscreen").show(0, function() {
|
||
|
||
/**
|
||
@BASIC GOOGLE MAP
|
||
**/
|
||
var map = new GMaps({
|
||
div: '#gmap-init',
|
||
lat: Number(_lat),
|
||
lng: Number(_lng)
|
||
});
|
||
|
||
var marker = map.addMarker({
|
||
lat: Number(_lat),
|
||
lng: Number(_lng),
|
||
title: 'Company, Inc.'
|
||
});
|
||
|
||
});
|
||
|
||
// close map
|
||
jQuery("#map-fullscreen>button").bind('click', function(e) {
|
||
e.preventDefault();
|
||
jQuery("#map-fullscreen").hide();
|
||
});
|
||
|
||
|
||
});
|
||
});
|
||
|
||
|
||
});
|
||
|
||
|
||
|
||
|
||
|
||
/* GOOGLE MAP ON SLIDER
|
||
pack-realestate-property-item-2.html
|
||
*********************************** */
|
||
var _gs_container = "#gmap-slider";
|
||
|
||
if(jQuery(_gs_container).length > 0) {
|
||
jQuery(window).on("load", function() {
|
||
|
||
// get latitude and longitude
|
||
var _gs_this = jQuery(_gs_container),
|
||
_gs_lat = _gs_this.attr('data-lat') || 0,
|
||
_gs_lng = _gs_this.attr('data-lng') || 0,
|
||
_sliderH = jQuery("#slider").outerHeight(); // slider height
|
||
|
||
|
||
// load scripts first
|
||
loadScript('//maps.google.com/maps/api/js?key=' + googleMapKey, function() {
|
||
loadScript(plugin_path + 'gmaps.js', function() {
|
||
|
||
// Slider and google map shouyld have the same height
|
||
_gs_this.height(_sliderH);
|
||
|
||
/**
|
||
@PANORAMA GOOGLE MAP
|
||
**/
|
||
var panorama = GMaps.createPanorama({
|
||
el: _gs_container,
|
||
lat: Number(_gs_lat),
|
||
lng: Number(_gs_lng)
|
||
});
|
||
|
||
|
||
});
|
||
});
|
||
|
||
|
||
});
|
||
}
|
||
|
||
|
||
|
||
|
||
/* MORTGAGE CALCULATOR
|
||
pack-realestate-property-item.html
|
||
*********************************** */
|
||
// Recalculate on change
|
||
jQuery("#mcalc-price, #mcalc-dpayment, #mcalc-rate").keyup(function() {
|
||
_mcalc();
|
||
});
|
||
|
||
jQuery("#mcalc-term").change(function() {
|
||
_mcalc();
|
||
});
|
||
|
||
|
||
// Morgage Calculator
|
||
function _mcalc() {
|
||
var _mcalc_price = jQuery("#mcalc-price").val() || 0, // price
|
||
_mcalc_term = jQuery("#mcalc-term").val() || 10, // term
|
||
_mcalc_dpayment = jQuery("#mcalc-dpayment").val() || 0, // % down payment
|
||
_mcalc_rate = jQuery("#mcalc-rate").val() || 0, // rate
|
||
_mcalc_charges = jQuery("#mcalc-charges").html() || 0, // monthyl charges
|
||
_mcalc_charges = Number(_mcalc_charges.replace(',',''));
|
||
|
||
|
||
// it's a rare case scenario when interest rate is 0
|
||
// it's not accurate but we cover it - info only!
|
||
if(_mcalc_rate == 0)
|
||
_mcalc_rate = 0.000000000001;
|
||
|
||
|
||
// DOWN PAYMENT AMOUNT
|
||
_result_amount = _mcalc_price / 100 * _mcalc_dpayment;
|
||
jQuery("#mcalc-result-downpayment").html(_result_amount.formatMoney(2, '.', ','));
|
||
|
||
|
||
// MORTGAGE AMOUNT
|
||
_result_mamount = _mcalc_price - _result_amount;
|
||
jQuery("#mcalc-result-mamount").html(_result_mamount.formatMoney(2, '.', ','));
|
||
|
||
|
||
// MONTHLY MORTGAGE PAYMENT
|
||
// Formula: M = P [ i(1 + i)^n ] / [ (1 + i)^n – 1]
|
||
var P = _result_mamount; //principle / initial amount borrowed
|
||
var I = _mcalc_rate / 100 / 12; //monthly interest rate
|
||
var N = _mcalc_term * 12; //number of payments months
|
||
|
||
_result_mortgage = P * I * (Math.pow(1 + I, N)) / (Math.pow(1 + I, N) - 1);
|
||
jQuery("#mcalc-mortgage").html(_result_mortgage.formatMoney(2, '.', ','));
|
||
|
||
|
||
// TOTAL MONTHLY PAYMENT
|
||
_result_pmonthly = _result_mortgage + _mcalc_charges;
|
||
jQuery("#mcalc-pmonthly").html(_result_pmonthly.formatMoney(2, '.', ','));
|
||
|
||
}
|
||
|
||
if(jQuery("#mcalc-price").length > 0) {
|
||
_mcalc(); // init on load
|
||
}
|
||
|
||
|
||
} |