var asl_engine = {};
function asl_lock(){
swal({
title: "AGILE STORE LOCATOR LITE",
text: "THANK YOU FOR USING AGILE STORE LOCATOR LITE, MANY OTHER FEATURES INCLUDING THIS ONE IS INCLUDED IN FULL VERSION.",
html: true });
}
(function( $,app_engine ) {
'use strict';
function codeAddress(_address,_callback) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': _address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
_callback(results[0].geometry);
}
else {
alert("Geocode was not successful for the following reason: " + status);
}
});
};
function isEmpty(obj) {
if (obj == null) return true;
if(typeof(obj) == 'string' && obj == '')return true;
return Object.keys(obj).length === 0;
};
// Asynchronous load
var map,
map_object = {
is_loaded: true,
marker: null,
changed :false,
store_location: null,
map_marker : null,
intialize: function(_callback) {
var API_KEY = '';
if(asl_configs && asl_configs.api_key) {
API_KEY = '&key='+asl_configs.api_key;
}
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '//maps.googleapis.com/maps/api/js?v=3.exp&sensor=true&libraries=places,drawing&'
+'callback=asl_map_intialized'+API_KEY;
//+'callback=asl_map_intialized';
document.body.appendChild(script);
this.cb = _callback;
},
render_a_map: function(_lat,_lng) {
var hdlr = this,
map_div = document.getElementById('map_canvas'),
_draggable = true;
hdlr.store_location = (_lat && _lng)?[parseFloat(_lat),parseFloat(_lng)]:[-37.815,144.965];
var latlng = new google.maps.LatLng(hdlr.store_location[0],hdlr.store_location[1]);
if(!map_div)return false;
var mapOptions = {
zoom : 14,
minZoom : 8,
center:latlng,
//maxZoom: 10,
mapTypeId : google.maps.MapTypeId.ROADMAP,
styles:[{"stylers":[{"saturation":-100},{"gamma":1}]},{"elementType":"labels.text.stroke","stylers":[{"visibility":"off"}]},{"featureType":"poi.business","elementType":"labels.text","stylers":[{"visibility":"off"}]},{"featureType":"poi.business","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"poi.place_of_worship","elementType":"labels.text","stylers":[{"visibility":"off"}]},{"featureType":"poi.place_of_worship","elementType":"labels.icon","stylers":[{"visibility":"off"}]},{"featureType":"road","elementType":"geometry","stylers":[{"visibility":"simplified"}]},{"featureType":"water","stylers":[{"visibility":"on"},{"saturation":50},{"gamma":0},{"hue":"#50a5d1"}]},{"featureType":"administrative.neighborhood","elementType":"labels.text.fill","stylers":[{"color":"#333333"}]},{"featureType":"road.local","elementType":"labels.text","stylers":[{"weight":0.5},{"color":"#333333"}]},{"featureType":"transit.station","elementType":"labels.icon","stylers":[{"gamma":1},{"saturation":50}]}]
};
hdlr.map_instance = map = new google.maps.Map(map_div, mapOptions);
// && navigator.geolocation && _draggable
if((!hdlr.store_location || isEmpty(hdlr.store_location[0]))) {
/*navigator.geolocation.getCurrentPosition(function(position){
hdlr.changed = true;
hdlr.store_location = [position.coords.latitude,position.coords.longitude];
var loc = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
hdlr.add_marker(loc);
map.panTo(loc);
});*/
hdlr.add_marker(latlng);
}
else if(hdlr.store_location) {
if(isNaN(hdlr.store_location[0]) || isNaN(hdlr.store_location[1]))return;
//var loc = new google.maps.LatLng(hdlr.store_location[0], hdlr.store_location[1]);
hdlr.add_marker(latlng);
map.panTo(latlng);
}
},
add_marker: function(_loc) {
var hdlr = this;
hdlr.map_marker = new google.maps.Marker({
draggable:true,
position:_loc,
map:map
});
var marker_icon = new google.maps.MarkerImage(ASL_Instance.url+'admin/images/pin1.png');
marker_icon.size = new google.maps.Size(24,39);
marker_icon.anchor = new google.maps.Point(24,39);
hdlr.map_marker.setIcon(marker_icon);
hdlr.map_instance.panTo(_loc);
google.maps.event.addListener(
hdlr.map_marker,
'dragend',
function() {
hdlr.store_location = [hdlr.map_marker.position.lat(),hdlr.map_marker.position.lng()];
hdlr.changed = true;
var loc = new google.maps.LatLng(hdlr.map_marker.position.lat(), hdlr.map_marker.position.lng());
//map.setPosition(loc);
map.panTo(loc);
app_engine.pages.store_changed(hdlr.store_location);
});
}
};
//add the uploader
app_engine.uploader = function($form,_URL,_done/*,_submit_callback*/){
function formatFileSize(bytes) {
if (typeof bytes !== 'number') {
return ''
}
if (bytes >= 1000000000) {
return (bytes / 1000000000).toFixed(2) + ' GB'
}
if (bytes >= 1000000) {
return (bytes / 1000000).toFixed(2) + ' MB'
}
return (bytes / 1000).toFixed(2) + ' KB'
};
var ul = $form.find('ul');
$form[0].reset();
$form.fileupload({
url: _URL,
dataType: 'json',
//multipart: false,
done: function(e,data){
ul.empty();
_done(e,data);
$form.find('.progress-bar').css('width','0%');
$form.find('.progress').hide();
//reset form if success
if(data.result.success) {
}
},
add : function (e, data) {
ul.empty();
var tpl = $('
');
tpl.find('p').text(data.files[0].name.substr(0,50)).append('' + formatFileSize(data.files[0].size) + '');
data.context = tpl.appendTo(ul);
var jqXHR = null;
$form.find('.btn-start').unbind().bind('click', function () {
/*if(_submit_callback){
if(!_submit_callback())return false;
}*/
jqXHR = data.submit();
$form.find('.progress').show()
});
$form.find('.file-name').val(data.files[0].name);
},
progress : function (e, data) {
var progress = parseInt(data.loaded / data.total * 100, 10);
$form.find('.progress-bar').css('width',progress+'%');
$form.find('.sr-only').html(progress+'%');
if (progress == 100) {
data.context.removeClass('working');
}
},
fail : function (e, data) {
data.context.addClass('error');
$form.find('.upload-status-box').html('Upload Failed! Please try again.').addClass('bg-warning alert')
}
/*
formData: function(_form) {
var formData = [{
name: 'data[action]',
value: 'asl_add_store'
}]
// console.log(formData);
return formData;
}*/
})
.bind('fileuploadsubmit', function (e, data) {
data.formData = $form.serializeObject();
})
.prop('disabled', !$.support.fileInput)
.parent().addClass($.support.fileInput ? undefined : 'disabled');
};
//http://harvesthq.github.io/chosen/options.html
app_engine['pages'] = {
store_changed:function(_position){
$('#asl_txt_lat').val(_position[0]);
$('#asl_txt_lng').val(_position[1]);
},
manage_categories: function(){
var table = null,
row_delete_id = null;
//Prompt the delete
$('#tbl_categories').on('click','.glyphicon-trash',function(){
row_delete_id = $(this).data('id');
$('#confirm-delete').modal('show');
});
var _delete_category = function(_id) {
ServerCall(ASL_REMOTE.URL+"?action=asl_delete_category",{category_id:_id},function(_response){
if(_response.success) {
displayMessage(_response.msg,$(".dump-message"),'alert alert-success static',true);
table.fnDraw();
return;
}
else if(_response.error) {
displayMessage(_response.error,$(".dump-message"),'alert alert-danger static',true);
return;
}
else {
displayMessage('Error Occured, Please try again.',$(".dump-message"),'alert alert-danger static',true);
}
},'json');
};
//delete the alert
$('#btn-delete-store').bind('click',function(){
$('#confirm-delete').modal('hide');
_delete_category(row_delete_id);
});
//prompt the category box
$('#btn-asl-new-c').bind('click',function(){
$('#asl-new-cat-box').modal('show');
});
var asInitVals = {};
table = $('#tbl_categories').dataTable({
"bProcessing": true,
"bFilter":false,
"bServerSide" : true,
//"scrollX": true,
/*"aoColumnDefs": [
{ 'bSortable': false, 'aTargets': [ 1 ] }
],*/
"bAutoWidth" : true,
"columnDefs": [
{ "width": "75px", "targets": 0 },
{ "width": "200px", "targets": 1 },
{ "width": "100px", "targets": 2 },
{ "width": "100px", "targets": 3 },
{ "width": "150px", "targets": 4 },
{ "width": "150px", "targets": 5 },
{ 'bSortable': false, 'aTargets': [ 5 ] }
],
"iDisplayLength": 10,
"sAjaxSource": ASL_REMOTE.URL+"?action=asl_get_categories",
"columns": [
{ "data": "id" },
{ "data": "category_name" },
{ "data": "is_active" },
{ "data": "icon" },
{ "data": "created_on" },
{ "data": "action" }
],
"fnServerParams" : function (aoData) {
$("#tbl_stores_wrapper .dataTables_scrollHead thead input").each( function (i) {
if ( this.value != "" ) {
aoData.push({
"name" : 'filter['+$(this).attr('data-id')+']',
"value" :this.value
});
}
});
},
"order": [[0, 'desc']]
});
//TO ADD NEW Categories
var url_to_upload = ASL_REMOTE.URL,
$form = $('#frm-addcategory');
app_engine.uploader($form,url_to_upload+'?action=asl_add_categories',function (e, data) {
var data = data.result;
if(!data.success) {
$('#message_upload').html(data.message).removeClass('hide');
}
else {
$('#message_upload').text(data.message);
//reset form
$('#asl-new-cat-box').modal('hide');
$('#frm-addcategory').find('input:text, input:file').val('');
$('#message_upload').empty().addClass('hide');
$('#progress_bar').hide();
//show table value
table.fnDraw();
}
});
//show edit category model
$('#tbl_categories tbody').on('click','.edit_category',function(e){
$('#updatecategory_image').show();
$('#updatecategory_editimage').hide();
$('#confirm-update').modal('show');
$('#update_category_id').text($(this).attr("data-id"));
$('#update_category_id_input').val($(this).attr("data-id"));
$('#message_update').text("");
ServerCall(ASL_REMOTE.URL+"?action=asl_get_category_byid",{category_id:$(this).attr("data-id")},function(_response){
if(_response.success) {
$("#update_category_name").val(_response.list[0]['category_name']);
$("#update_category_icon").attr("src", ASL_Instance.url+"public/icon/"+_response.list[0]['icon']);
}
else {
$('#message_update').text(_response.error);return;
}
},'json');
});
//show edit category upload image
$('#change_image').click(function(){
$("#update_category_icon").attr("data-id","")
$('#updatecategory_image').hide();
$('#message_update').text("");
$('#updatecategory_editimage').show();
});
//update category without icon
$('#btn-asl-update-categories').click(function(){
if($("#update_category_icon").attr("data-id") == "same" ) {
ServerCall(ASL_REMOTE.URL+"?action=asl_update_category",
{data:{category_id:$("#update_category_id").text(),action:"same",category_name:$("#update_category_name").val()}},
function(_response){
if(_response.success) {
$('#message_update').text(_response.msg);
table.fnDraw();
return;
}
else if(_response.error) {
$('#message_update').text(_response.msg);
return;
}
},'json');
}
});
//update category with icon
var url_to_upload = ASL_REMOTE.URL,
$form = $('#frm-updatecategory');
$form.append(' ');
app_engine.uploader($form,url_to_upload+'?action=asl_update_category',function (e, data) {
var data = data.result;
if(data.success) {
$('#message_update').text(data.msg);
$('#confirm-update').modal('hide');
$('#frm-updatecategory').find('input:text, input:file').val('');
$('#progress_bar_').hide();
table.fnDraw();
}
else
$('#message_update').text(data.error);
});
//show delete category model
$('#tbl_categories tbody').on('click','.delete_category',function(e){
$('#confirm-delete').modal('show');
$('#delete_category_id').text($(this).attr("data-id"));
});
//delete category
$('#btn-delete-category').click(function(){
ServerCall(ASL_REMOTE.URL+"?action=asl_delete_category",{category_id:$("#delete_category_id").text()},function(_response){
if(_response.success) {
$('#message_upload').text(_response.msg);
table.fnDraw();
$('#confirm-delete').modal('hide');
return;
}
else if(_response.error) {
$('#message_upload').text(_response.msg);
return;
}
},'json');
});
$("thead input").keyup( function (e) {
if(e.keyCode == 13) {
table.fnDraw();
}
});
},
manage_stores: function(){
var table = null,
row_delete_id = null,
row_duplicate_id = null;
//Prompt the delete alert
$('#tbl_stores').on('click','.glyphicon-trash',function(){
row_delete_id = $(this).data('id');
$('#confirm-delete').modal('show');
});
//Prompt the DUPLICATE alert
$('#tbl_stores').on('click','.glyphicon-duplicate',function(){
asl_lock();
});
var delete_store = function(_id) {
ServerCall(ASL_REMOTE.URL+"?action=asl_delete_store",{store_id:_id},function(_response){
if(_response.success) {
displayMessage(_response.msg,$(".dump-message"),'alert alert-success static',true);
table.fnDraw();
return;
}
else if(_response.error) {
displayMessage(_response.error,$(".dump-message"),'alert alert-danger static',true);
return;
}
else {
displayMessage('Error Occured, Please try again.',$(".dump-message"),'alert alert-danger static',true);
}
},'json');
};
/*DUPLICATE STORES*/
var duplicate_store = function(_id) {
ServerCall(ASL_REMOTE.URL+"?action=asl_duplicate_store",{store_id:_id},function(_response){
if(_response.success) {
displayMessage(_response.msg,$(".dump-message"),'alert alert-success static',true);
table.fnDraw();
return;
}
else if(_response.error) {
displayMessage(_response.error,$(".dump-message"),'alert alert-danger static',true);
return;
}
else {
displayMessage('Error Occured, Please try again.',$(".dump-message"),'alert alert-danger static',true);
}
},'json');
};
//delete the alert
$('#btn-delete-store').bind('click',function(){
$('#confirm-delete').modal('hide');
delete_store(row_delete_id);
});
//duplicate the alert
$('#btn-duplicate-store').bind('click',function(){
$('#confirm-duplicate').modal('hide');
duplicate_store(row_duplicate_id);
});
var asInitVals = {};
table = $('#tbl_stores').dataTable({
"bProcessing": true,
"bFilter":false,
"bServerSide" : true,
"scrollX": true,
/*"aoColumnDefs": [
{ 'bSortable': false, 'aTargets': [ 1 ] }
],*/
"bAutoWidth" : true,
"columnDefs": [
{ "width": "75px", "targets": 0 },
{ "width": "200px", "targets": 1 },
{ "width": "300px", "targets": 2 },
{ "width": "300px", "targets": 3 },
{ "width": "150px", "targets": 4 },
{ "width": "150px", "targets": 5 },
{ "width": "150px", "targets": 6 },
{ "width": "150px", "targets": 7 },
{ "width": "150px", "targets": 8 },
{ "width": "150px", "targets": 9 },
{ "width": "50px", "targets": 10 },
{ "width": "350px", "targets": 11 },
{ "width": "50px", "targets": 12 },
{ "width": "50px", "targets": 13 },
{ "width": "50px", "targets": 14 },
{ "width": "50px", "targets": 15 },
{ "width": "200px", "targets": 16 },
{ "width": "150px", "targets": 17 },
{ "width": "250px", "targets": 18 },
{ 'bSortable': false, 'aTargets': [ 11,16,18 ] }
],
"iDisplayLength": 10,
"sAjaxSource": ASL_REMOTE.URL+"?action=asl_get_store_list",
"columns": [
{ "data": "id" },
{ "data": "title" },
{ "data": "description" },
{ "data": "street" },
{ "data": "state" },
{ "data": "city" },
{ "data": "phone" },
{ "data": "email" },
{ "data": "website" },
{ "data": "postal_code" },
{ "data": "is_disabled" },
{ "data": "categories" },
{ "data": "marker_id" },
{ "data": "logo_id" },
{ "data": "start_time" },
{ "data": "end_time" },
{ "data": "days" },
{ "data": "created_on" },
{ "data": "action" }
],
"fnServerParams" : function (aoData) {
$("#tbl_stores_wrapper .dataTables_scrollHead thead input").each( function (i) {
if ( this.value != "" ) {
aoData.push({
"name" : 'filter['+$(this).attr('data-id')+']',
"value" :this.value
});
}
});
},
"order": [[0, 'desc']]
});
//oTable.fnSort( [ [10,'desc'] ] );
$("thead input").keyup( function (e) {
if(e.keyCode == 13) {
table.fnDraw();
}
});
$("#Search_Data").click( function () {
table.fnDraw();
});
},
customize_map: function(){
//Trafic Layer
$('.asl-p-cont .map-option-bottom #asl-trafic_layer').bind('click',function(e){
asl_lock();
});
//Transit Layer
$('.asl-p-cont .map-option-bottom #asl-transit_layer').bind('click',function(e){
asl_lock();
});
//Bike Layer
$('.asl-p-cont .map-option-bottom #asl-bike_layer').bind('click',function(e){
asl_lock();
});
//Marker Animate
$('.asl-p-cont .map-option-bottom #asl-marker_animations').bind('click',function(e){
asl_lock();
});
//Save the Map Customization
$('#asl-save-map').bind('click',function(e){
asl_lock();
});
},
edit_store: function(_store){
this.add_store(true,_store);
},
add_store: function(_is_edit,_store) {
var $form = $('#frm-addstore'),
hdlr = this;
$('#time_per_day').bind('change',function(e){
asl_lock();
});
var current_time = new Date();
current_time.setHours(7);
current_time.setMinutes(0);
var start_time = current_time.toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit'});
current_time.setHours(current_time.getHours()+ 12);
var end_time = current_time.toLocaleTimeString(navigator.language, {hour: '2-digit', minute:'2-digit'});
/*Time Picker for Duration*/
$('.start_time').timepicker({
defaultTime: (_store)?null:start_time,
appendWidgetTo: '.asl-p-cont'
});
$('.end_time').timepicker({
defaultTime: (_store)?null:end_time,
appendWidgetTo: '.asl-p-cont'
});
if(_store) {
if(_store.days)
jQuery('.asl-p-cont #asl-open_days').val(_store.days.split(','))
}
else
$('.asl-p-cont #asl-open_days').val([0,1,2,3,4]);
/*Dropdown Style*/
if(_store && _store.logo_id)
$('#ddl-asl-logos').val(String(_store.logo_id));
$('#ddl-asl-logos').ddslick({
//data: ddData,
imagePosition:"right",
selectText: "Select Logo",
truncateDescription: true
//defaultSelectedIndex:(_store)?String(_store.logo_id):null
});
//init the maps
$(function(){
if(!(window['google'] && google.maps)) {
map_object.intialize();
}
else
asl_map_intialized();
});
window['asl_map_intialized'] = function(){
if(_store)
map_object.render_a_map(_store.lat,_store.lng);
else
map_object.render_a_map();
};
//the category ddl
$('#ddl_categories').chosen({
width:"100%"
/*
no_results_text:'Oops, nothing found!',
allow_single_deselect:true,
disable_search_threshold:10*/
});
/*Form Submit*/
$form.validationEngine({
binded: true,
scroll: false
});
//To get Lat/lng
$('#txt_city,#txt_state,#txt_postal_code').bind('blur',function(e){
if(!isEmpty($form[0].elements["data[city]"].value) && !isEmpty($form[0].elements["data[state]"].value) && !isEmpty($form[0].elements["data[postal_code]"].value))
{
var address = [$form[0].elements["data[street]"].value,$form[0].elements["data[city]"].value,$form[0].elements["data[postal_code]"].value,$form[0].elements["data[state]"].value].join(',');
codeAddress(address,function(_geometry){
var s_location = [_geometry.location.lat(),_geometry.location.lng()];
var loc = new google.maps.LatLng(s_location[0],s_location[1]);
map_object.map_marker.setPosition(_geometry.location);
map.panTo(_geometry.location);
app_engine.pages.store_changed(s_location);
});
}
});
//Add store button
$('#btn-asl-add').bind('click',function(e){
if(!$form.validationEngine('validate'))return;
var $btn = $(this),
formData = $form.serializeObject();
formData['action'] = (_is_edit)?'asl_edit_store':'asl_add_store';
formData['category'] = $('#ddl_categories').val();
var _open_days = $('.asl-p-cont #asl-open_days').val();
_open_days = (_open_days)?_open_days.join(','):'';
formData['data[days]'] = _open_days;
if(_is_edit){formData['updateid'] = $('#update_id').val();}
formData['data[logo_id]'] = $('#ddl-asl-logos').data('ddslick').selectedData.value;
$btn.bootButton('loading');
ServerCall(ASL_REMOTE.URL,formData,function(_response){
$btn.bootButton('reset');
if(_response.success) {
$form[0].reset();
$btn.bootButton('completed');
if(_is_edit) {
_response.msg += " Redirect...";
window.location.replace(ASL_REMOTE.URL.replace('-ajax','')+"?page=manage-agile-store");
}
else
$('.days_table').addClass('hide');
displayMessage(_response.msg,$(".dump-message"),'alert alert-success static',true);
return;
}
else if(_response.error) {
displayMessage(_response.error,$(".dump-message"),'alert alert-danger static',true);
return;
}
else {
displayMessage('Error Occured, Please try again.',$(".dump-message"),'alert alert-danger static',true);
}
},'json');
});
//UPLOAD LOGO FILE IMAGE
var url_to_upload = ASL_REMOTE.URL,
$form_upload = $('#frm-upload-logo');
$('#addimagemodel').on('hidden.bs.modal', function (e) {
$('#message_upload').addClass('hide');
});
app_engine.uploader($form_upload,url_to_upload+'?action=asl_upload_logo',function (_e, _data) {
var data = _data.result;
if(!data.success) {
$('#message_upload').html(data.message).removeClass('hide');
}
else {
var _HTML = '';
for(var k in data.list)
_HTML += '';
$('#ddl-asl-logos').empty().ddslick('destroy');
$('#ddl-asl-logos').html(_HTML).ddslick({
//data: ddData,
imagePosition:"right",
selectText: "Select Logo",
truncateDescription: true,
defaultSelectedIndex:(_store)?String(_store.logo_id):null
});
$('#addimagemodel').modal('hide');
$form_upload.find('.progress_bar_').hide();
$form_upload.find('input:text, input:file').val('');
$('#message_upload').empty();
}
});
$('#ddl-asl-markers').ddslick({
//data: ddData,
imagePosition:"right",
selectText: "Select Marker",
truncateDescription: true
// defaultSelectedIndex: (_store)?String(_store.marker_id):null
});
},//user setting
user_setting: function(_configs) {
var $form = $('#frm-usersetting');
var _keys = Object.keys(_configs);
for(var i in _keys) {
var $elem = $form.find('#asl-'+_keys[i]);
$elem.val(_configs[_keys[i]]);
}
$('#btn-asl-user_setting').bind('click',function(e){
if(!$form.validationEngine('validate'))return;
var all_data = {
};
var data = $form.serializeObject();
all_data = $.extend(all_data,data);
ServerCall(ASL_REMOTE.URL+'?action=asl_save_setting',all_data,function(_response) {
if(_response.success) {
displayMessage(_response.msg,$(".dump-message"),'alert alert-success static',true);
return;
}
else if(_response.error) {
displayMessage(_response.msg,$(".dump-message"),'alert alert-danger static',true);
return;
}
else {
displayMessage('Error Occurred.',$(".dump-message"),'alert alert-danger static',true);
return;
}
},'json');
});
}
};
//Legal Location not found
//if jquery is defined
if($)
$('.asl-p-cont').append('Working ...
');
})( jQuery,asl_engine );