mivita/_static/assets/js/view/pack_realestate.js
2018-10-29 09:39:31 +01:00

281 lines
No EOL
6.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/** ********************************************** **
@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
}
}