;
(function () {
_App.Util = function ()
{
this.initialize();
};
_App.Util.prototype =
{
startupTime: 0,
theSecond: -1,
initialize: function ()
{
this.startupTime = this.unixTimestamp();
},
unixTimestamp: function ()
{
return Math.round((new Date().getTime() / 1000));
},
getUrlParam: function (name)
{
hashLoc = window.location.hash.split("?");
return decodeURI(
(RegExp(name + '=' + '(.+?)(&|$)').exec(hashLoc[1]) || [, null])[1]
);
},
ie: (function ()
{
var undef,
v = 3,
div = document.createElement('div'),
all = div.getElementsByTagName('i');
while (
div.innerHTML = '',
all[0]
)
{
;
}
return v > 4
? v
: undef;
}()),
updateCheckboxStyle: function ($_checkbox)
{
if ($_checkbox.hasClass('no-mod'))
{
return;
}
var label = $_checkbox.parent('label');
if (label.length)
{
$(label).addClass('checkbox');
}
else
{
$_checkbox.wrap('');
}
$('').insertAfter($_checkbox);
if (!!this.ie && this.ie < 9)
{
$_checkbox.set_checked = function () {
if (this.checked)
{
form.find('input[name="' + this.name + '"] + span').removeClass('checked');
$(this).next('span').addClass('checked').blur();
}
};
$_checkbox.set_checked();
$_checkbox.bind('change', function () {
this.set_checked();
});
}
if ($_checkbox.value == 'on')
{
$_checkbox.value = true;
}
},
updateCheckboxStyles: function (form)
{
var $$_checkboxes = form.find('input[type=checkbox]');
$.each($$_checkboxes, function (i, checkbox) {
var $_checkbox = $(checkbox);
if ($_checkbox.hasClass('no-mod'))
{
return;
}
var label = $_checkbox.parent('label');
if (label.length)
{
$(label).addClass('checkbox');
}
else
{
$_checkbox.wrap('');
}
$('').insertAfter($_checkbox);
if (!!this.ie && this.ie < 9)
{
checkbox.set_checked = function () {
if (this.checked)
{
form.find('input[name="' + this.name + '"] + span').removeClass('checked');
$(this).next('span').addClass('checked').blur();
}
};
checkbox.set_checked();
$_checkbox.bind('change', function () {
this.set_checked();
});
}
if (checkbox.value == 'on')
{
checkbox.value = true;
}
});
},
updateTimeLeft: function ()
{
$('.time-left-dynamic').each(function()
{
var value = $(this).attr('data-value');
var numDays = $(this).attr('data-days');
var endDate = $(this).attr('data-date');
$(this).html(
App.Util.calculateTimeLeft(
value,
numDays,
endDate,
true
)
);
});
},
calculateTimeLeft: function (value, numDays, endDate, isUpdate)
{
var dateTime = value.split(' '),
date = dateTime[0],
time = dateTime[1],
dateParts = date.split('-').map(function (part) {
return parseInt(part, 10);
}),
timeParts = time.split(':').map(function (part) {
return parseInt(part, 10);
});
var timeObject = new Date();
var currentDateTime = new Date(timeObject.getTime() - (1000 * App.timeDiff));
if (endDate)
{
var dateTime = endDate.split(' '),
date = dateTime[0],
time = dateTime[1],
dateParts = date.split('-').map(function (part) {
return parseInt(part, 10);
}),
timeParts = time.split(':').map(function (part) {
return parseInt(part, 10);
});
var expireDateTime = new Date(dateParts[0], dateParts[1] - 1, dateParts[2], timeParts[0], timeParts[1], timeParts[2]);
}
else
{
var dateTime = value.split(' '),
date = dateTime[0],
time = dateTime[1],
dateParts = date.split('-').map(function (part) {
return parseInt(part, 10);
}),
timeParts = time.split(':').map(function (part) {
return parseInt(part, 10);
});
var expireDateTime = new Date(dateParts[0], dateParts[1] - 1, dateParts[2], timeParts[0], timeParts[1], timeParts[2]);
expireDateTime.setDate(expireDateTime.getDate() + parseInt(numDays));
}
var difference = expireDateTime.getTime() - currentDateTime.getTime();
var daysDifference, hoursDifference, minutesDifference;
daysDifference = Math.floor(difference / 1000 / 60 / 60 / 24);
difference -= daysDifference * 1000 * 60 * 60 * 24;
hoursDifference = Math.floor(difference / 1000 / 60 / 60);
difference -= hoursDifference * 1000 * 60 * 60;
minutesDifference = Math.floor(difference / 1000 / 60);
if (expireDateTime.getTime() < currentDateTime.getTime())
{
return '0m';
}
var result = daysDifference > 0
? daysDifference + 'd, ' + hoursDifference + 'h, ' + minutesDifference + 'm'
: hoursDifference + 'h, ' + minutesDifference + 'm';
if (isUpdate)
{
return result;
}
return ''
+ result + '';
},
calculateTimeLeftHours: function (value, numHours)
{
var dateTime = value.split(' '),
date = dateTime[0],
time = dateTime[1],
dateParts = date.split('-').map(function (part) {
return parseInt(part, 10);
}),
timeParts = time.split(':').map(function (part) {
return parseInt(part, 10);
});
var timeObject = new Date();
var currentDateTime = new Date(timeObject.getTime() - (1000 * App.timeDiff));
var expireDateTime = new Date(dateParts[0], dateParts[1] - 1, dateParts[2], timeParts[0], timeParts[1], timeParts[2]);
var addSeconds = expireDateTime.setSeconds(expireDateTime.getSeconds() + numHours * 3600);
expireDateTime = new Date(expireDateTime.getSeconds() + addSeconds);
//console.log('expireDateTime2',expireDateTime2 ) ;
var difference = expireDateTime.getTime() - currentDateTime.getTime();
var daysDifference, hoursDifference, minutesDifference;
daysDifference = Math.floor(difference / 1000 / 60 / 60 / 24);
difference -= daysDifference * 1000 * 60 * 60 * 24;
hoursDifference = Math.floor(difference / 1000 / 60 / 60);
difference -= hoursDifference * 1000 * 60 * 60;
minutesDifference = Math.floor(difference / 1000 / 60);
difference -= minutesDifference * 1000 * 60;
if (expireDateTime.getTime() < currentDateTime.getTime())
{
return '0m';
}
return daysDifference > 0
? ((daysDifference * 2) + hoursDifference) + 'h, ' + minutesDifference + 'm'
: hoursDifference + 'h, ' + minutesDifference + 'm';
/*? daysDifference + 'd, ' + hoursDifference + 'h, ' + minutesDifference + 'm'
: hoursDifference + 'h, ' + minutesDifference + 'm';*/
},
updateClock: function ()
{
var timeObject = new Date();
var currentTime = new Date(timeObject.getTime() - (1000 * App.timeDiff));
var currentHours = currentTime.getHours();
var currentMinutes = currentTime.getMinutes();
var currentSeconds = currentTime.getSeconds();
currentMinutes = ( currentMinutes < 10 ? "0" : "" ) + currentMinutes;
currentSeconds = ( currentSeconds < 10 ? "0" : "" ) + currentSeconds;
currentHours = ( currentHours == 0 ) ? 12 : currentHours;
var currentTimeString = currentHours + ":" + currentMinutes + ":" + currentSeconds;
$("#clock").html(currentTimeString);
$("#clockmobi").html(currentTimeString);
if (parseInt(currentSeconds) < App.Util.theSecond)
{
App.Util.updateTimeLeft();
}
App.Util.theSecond = parseInt(currentSeconds);
},
setCookie: function (name, value, days)
{
if (days)
{
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = "; expires=" + date.toGMTString();
}
else
{
var expires = "";
}
document.cookie = escape(name) + "=" + escape(value) + expires + "; path=/";
},
getCookie: function (name, defaultValue)
{
var nameEQ = escape(name) + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++)
{
var c = ca[i];
while (c.charAt(0) == ' ')
{
c = c.substring(1, c.length);
}
if (c.indexOf(nameEQ) == 0)
{
return unescape(c.substring(nameEQ.length, c.length));
}
}
return undefined == defaultValue
? null
: defaultValue;
},
formatDate: function (formatDate, formatString)
{
if (formatDate instanceof Date)
{
var months = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
var yyyy = formatDate.getFullYear();
var yy = yyyy.toString().substring(2);
var m = formatDate.getMonth() + 1;
var mm = m < 10 ? "0" + m : m;
var mmm = months[m];
var d = formatDate.getDate();
var dd = d < 10 ? "0" + d : d;
var h = formatDate.getHours();
var hh = h < 10 ? "0" + h : h;
var n = formatDate.getMinutes();
var nn = n < 10 ? "0" + n : n;
var s = formatDate.getSeconds();
var ss = s < 10 ? "0" + s : s;
formatString = formatString.replace(/yyyy/i, yyyy);
formatString = formatString.replace(/yy/i, yy);
formatString = formatString.replace(/mmm/i, mmm);
formatString = formatString.replace(/mm/i, mm);
formatString = formatString.replace(/m/i, m);
formatString = formatString.replace(/dd/i, dd);
formatString = formatString.replace(/d/i, d);
formatString = formatString.replace(/hh/i, hh);
formatString = formatString.replace(/h/i, h);
formatString = formatString.replace(/nn/i, nn);
formatString = formatString.replace(/n/i, n);
formatString = formatString.replace(/ss/i, ss);
formatString = formatString.replace(/s/i, s);
return formatString;
}
else
{
return "";
}
}
};
String.prototype.replaceAll = function (str1, str2, ignore)
{
return this.replace(new RegExp(str1.replace(/([\/\,\!\\\^\$\{\}\[\]\(\)\.\*\+\?\|\<\>\-\&])/g, "\\$&"), (ignore ? "gi" : "g")), (typeof(str2) == "string") ? str2.replace(/\$/g, "$$$$") : str2);
};
jQuery.validator.addMethod("notNull", function (value, element, params) {
return this.optional(element) || value != null;
}, "Please select a value."
);
jQuery.validator.addMethod("mobile", function (value, element, params) {
return this.optional(element) || value.match(/^[0-9]\d{8}$/) != null;
}, "Must be a valid mobile number."
);
jQuery.validator.addMethod("companyReg", function (value, element, params) {
return this.optional(element) || value.match(/^\d{4}\/\d{6}\/\d{2}$/) != null;
}, "Incorrect format."
);
$.validator.setDefaults({
ignore: [],
errorPlacement: function (error, element) {
//error.prepend('
');
if (element.hasClass('selectpicker'))
{
var elem = $('button[data-id=' + element.attr("name") + ']');
elem.addClass('error');
error.insertAfter(elem);
}
else
{
error.insertAfter(element);
}
},
unhighlight: function (element, errorClass, validClass) {
if ($(element).hasClass('selectpicker'))
{
$('button[data-id=' + $(element).attr("name") + ']').removeClass(errorClass).addClass(validClass);
}
else
{
$(element).removeClass(errorClass).addClass(validClass);
}
$(element.form).find("label[for=" + element.id + "]." + errorClass)
.remove();//.removeClass(errorClass);
}
});
})();
$.fn.setCursorPosition = function (pos) {
if ($(this).get(0).setSelectionRange)
{
$(this).get(0).setSelectionRange(pos, pos);
}
else if ($(this).get(0).createTextRange)
{
var range = $(this).get(0).createTextRange();
range.collapse(true);
range.moveEnd('character', pos);
range.moveStart('character', pos);
range.select();
}
};