(function ($) {
// http://davidwalsh.name/javascript-debounce-function
function debounce(func, wait, immediate) {
var timeout;
return function () {
var context = this, args = arguments;
var later = function () {
timeout = null;
if (!immediate)
func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow)
func.apply(context, args);
};
};
/*______________________________________________________*/
$(function () {
//$('#test').html(mm.display_name);
console.log(mm);
$("#cardloading").attr('src', mm.loading);
$("#loading90").attr('src', mm.loading);
$("#done").attr('src', mm.done);
$("span.collector").text("Pactrick");
init_clientname_input("#username");
});
function clientname_suggestions(){
return new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace('name'),
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: mm.ajax_url + '?' + jQuery.param({
_ajax_nonce: mm.nonce, // nonce
action: "search_users", // action
pattern: "QUERY", // search pattern
}),
wildcard: 'QUERY' // %QUERY will be replace by users input in
}, // the url option.
});
}
function onUpdateClientID (e, suggestion)
{
mm.current_user = suggestion.userid;
$('#details').hide();
$.post(mm.ajax_url, { // POST request
_ajax_nonce: mm.nonce, // nonce
action: "list_users", // action
client : suggestion.userid,
name : ''
}, function(response, status, xhr){
step2_verify_user(response);
}).fail(function(){
errUserName("Network Error, Please try again later");
});
}
function init_clientname_input(selector){
//console.log('selector = ' + selector);
// init Typeahead
jQuery(selector).typeahead(
{
minLength: 0,
highlight: true,
hint:false,
},
{
name: 'clientnames',
source: clientname_suggestions(), // suggestion engine is passed as the source
display: function(item) { // display: 'name' will also work
//console.log('display' + item.userid);
return item.username;
},
limit: 5,
templates: {
suggestion: function(item) {
//console.log(item);
return '
'+ item.username +'-'+ item.userid +'
';
},
pending: function (query) {
return '
';
},
},
'updater' : function(item) {
//console.log('selected +' + item);
return item;
}
}).bind('typeahead:select', onUpdateClientID
).bind('typeahead:autocomplete', onUpdateClientID);
}
function errUserName(msg)
{
var el = $("#errUserName");
el.html(msg);
el.fadeIn();
setTimeout(function(){
el.fadeOut();
}, 2000);
}
//step1
$(document).on("click", "#step1", function(){
var input = $("#username").val();
if ( input == "" ){
errUserName(" cannot be empty");
return;
}
$.post(mm.ajax_url, { // POST request
_ajax_nonce: mm.nonce, // nonce
action: "list_users", // action
client : mm.current_user,
}, function(response, status, xhr){
step2_verify_user(response);
}).fail(function(){
errUserName("Network Error, Please try again later");
});
});
//step2
function step2_verify_user(response)
{
console.log(response);
var el = $("#userpass");
el.slideUp();
el.slideDown();
$("#vmobile").text(response.phone);
$("#vemail").text(response.email);
}
//verify
$(document).on("click", "#step2", function(){
var input = $("#verifycode").val();
var method = $("#verify_method").val();
$.post(mm.ajax_url, { // POST request
_ajax_nonce: mm.nonce, // nonce
action: "verify_user", // action
client : mm.current_user,
method: method,
verifycode : input,
}, function(response, status, xhr){
step3_show_details(response);
}).fail(function(){
errUserName("Network Error, Please try again later");
});
});
function step3_show_details(response)
{
var el = $('#details');
el.slideDown();
if ( response.pass ){
el.slideDown();
$("#errVerify").text("");
}else {
el.hide();
$("#errVerify").text("Incorrect, please try again");
}
$("#postaladdr").val(response.addr);
$("#states").val(response.state);
$("span.collector").text(response.pickup);
$("#pickupcontact").val(response.pp);
$("#pickupwechat").val(response.ppwechat);
$("#pickuplocation").val(response.loc);
$("#pickuptime").val(response.time);
$(':radio:not(:checked)').attr('disabled', false);
$(':radio:checked').attr('disabled', false);
//set delivery
switch(response.delivery)
{
case 'pp':
$('input:radio[name=delivery]:nth(2)').prop('checked',true);
$('tr.pp').show();
break;
case 'dp':
$('tr.pp').hide();
$('input:radio[name=delivery]:nth(1)').prop('checked',true);
break;
default:
$('tr.pp').hide();
$('input:radio[name=delivery]:nth(0)').prop('checked',true);
}
$(':radio:not(:checked)').attr('disabled', true);
$(':radio:checked').attr('disabled', false);
//steps
$("#medal").prop("checked", response.step >= 1);
$("#posted").prop("checked", response.step >= 2);
$("#received").prop("checked", response.step >= 3);
$("#readyforpickup").prop("checked", response.step >= 4);
$("#delivered").prop("checked", response.step >= 5);
}
//apply card
$(document).on("click", "#cardbtn", function(){
var loading = $('#cardloading');
var check = $('#card');
$(this).hide();
loading.show();
setTimeout(function(){
loading.hide();
check.show();
}, 2000);
});
//apply 90 meda;
$(document).on("click", "#btn90", function(){
var loading = $('#loading90');
var check = $('#medal90');
$(this).hide();
loading.show();
setTimeout(function(){
loading.hide();
check.show();
}, 2000);
});
//confirm;
$(document).on("click", "#confirm", function(){
var search = $("#search");
var verify = $("#userpass");
var details = $("#details");
var btn = $('#confirm');
var img = $('#done');
$(this).hide();
verify.hide();
details.hide();
search.hide();
img.show();
setTimeout(function(){
btn.show();
img.hide();
}, 4000);
});
})(jQuery);