| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : C:/HostingSpaces/admin/chatme24.com/wwwroot/update/update-chameleon-4.6-4.7/_server/ |
Upload File : |
var MSG_MAX_LENGTH = '%1 may only be a maximum of %2 characters long.';
var MSG_MIN_LENGTH = '%1 must be a minimum of %2 characters long.';
var MSG_REQ_FIELD = '%1 is a required field.';
var MSG_INVALID_EMAIL = 'Invalid email address: %1';
var MSG_REQUIRED_SELECT = 'Please select a value for %1.';
var MSG_ALPHA_NUMERIC = '%1 may only contain alphanumeric characters.';
var MSG_NUMERIC = '%1 may only contain numeric characters!';
var MSG_TWO_FIELDS = '%1 and %2 must be the same.';
var MSG_NOT_TWO_FIELDS = '%1 and %2 may not have the same value.';
var MSG_INVALID_LOGIN = '%1 can not contain #, &, \', \\, / or " !';
var isMobileBrowser=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
var h_chat = 388;
var w_chat = 317;
var h_chat_offset = 34;
var siteTopOffset = 0;
var widgetParamsInit = [2, 7, 84];
var cacheElement={};
if (window.jQuery) {
var $win=$(window), $doc=$(document);
}
// Fix console issue in old IE versions.
if (!window.console) console = { log: function(){}, error: function(){} };
var jqTransformDaySelect = false;
var widgetStatus = {};
function validateMaxLength(field, name, maxLength) {
var value = field.value;
var originalVal = value; //store a copy with the \n's in it
var newVal = ""; //new value with any extra characters removed from it so as not to go over maxLength
var character = null;
value = value.replace(/\n/g,'**'); // bug #4830 when the javascript validates it sees \n's and java validates it sees \r\n's so a string may pass javascript validation but fail java validation, solution validate on a copy of the string with all \n's replaced with 2 characters to simulate the java length
if (value.length > maxLength)
{
//loop through the string getting one character at a time.
//If we encounter a \n we have to count it as 2 characters due to bug #4830
for(var i=0, count=1; count<=maxLength; i++, count++){
character = originalVal.charAt(i);
//if this is a new line char make sure we have 2 spaces available in the new string
if(character == "\n" && count<=maxLength-1){
newVal = newVal.concat(character);
count++;
}else{
newVal = newVal.concat(character);
}
}
var msg = MSG_MAX_LENGTH.replace('%1', name);
msg = msg.replace('%2', maxLength);
alert(msg);
try{
//substitute in the shortened string into the field.
field.value = newVal;
field.focus();
}catch(e){}
return false;
}
return true;
}
function validateMinLength(field, name, minLength) {
if (field.value.length < minLength) {
var msg = MSG_MIN_LENGTH.replace('%1', name);
msg = msg.replace('%2', minLength);
alert(msg);
try{field.focus();}catch(e){}
return false;
}
else {
return true;
}
}
function nonEmptyDependency(field1, field1Name, field2, field2Name, message) {
if(!isEmpty(field1) && isEmpty(field2)){
alert(message);
return false;
}else{
return true;
}
}
function validateRequiredField(field, name, dv, no_msg) {
try
{
if(typeof(field.val()) == 'string') {
field.value = field.val();
}
field.value = trim(field.value);
dv = trim(dv);
}
catch(e) {}
if (field.value.length == 0 || trim(field.value) == '' || field.value == dv)
{
no_msg = no_msg || false;
if(no_msg==true) alertCustom(name);
else alertCustom(MSG_REQ_FIELD.replace('%1', name));
try{field.focus();}catch(e){}
return false;
}
return true;
}
function validateEmailField(emailField, name) {
if (isEmpty(emailField)) return true;
if (!checkEmail(emailField.value)) {
alert(MSG_INVALID_EMAIL.replace('%1', emailField.value));
try{emailField.focus();}catch(e){}
return false;
}
return true;
}
function validateRequiredCheckbox(field, name, msg) {
if (!isCheckBoxChecked(field)) {
alert(msg.replace('%1', name));
try{field.focus();}catch(e){}
return false;
}
return true;
}
function validateRequiredSelect(field, name, defaultValue) {
if (field.value == null || field.value == '' || field.value == defaultValue) {
alert(MSG_REQUIRED_SELECT.replace('%1', name).replace(''', "'"));
try{field.focus();}catch(e){}
return false;
}
else {
return true;
}
}
function validateTwoFields(field,name,field2,name2) {
if (field.value != field2.value){
var msg = MSG_TWO_FIELDS.replace('%1', name);
msg = msg.replace('%2', name2);
alert(msg);
try{field.focus();}catch(e){}
return false;
}
return true;
}
function validateNotTwoFields(field,name,field2,name2) {
if (field.value == field2.value){
var msg = MSG_NOT_TWO_FIELDS.replace('%1', name);
msg = msg.replace('%2', name2);
alert(msg);
try{field.focus();}catch(e){}
return false;
}
return true;
}
function validateAlphaNumeric(field, name) {
var mask = /^[_0-9a-zA-Z-\.]*[_0-9a-zA-Z-\.]$/
if (!mask.test(field.value)) {
alert(MSG_ALPHA_NUMERIC.replace('%1', name));
try{field.focus();}catch(e){}
return false;
}
return true;
}
function validateAlphaNumericSpace(field, name) {
var mask = /^[ _0-9a-zA-Z-\.]*[ _0-9a-zA-Z-\.]$/
if (!mask.test(field.value)) {
alert(MSG_ALPHA_NUMERIC.replace('%1', name));
try{field.focus();}catch(e){}
return false;
}
return true;
}
function validateAlphaNumeric_search(field, name) {
var mask = /^[_0-9a-zA-Z-\.\s]*[_0-9a-zA-Z-\.\s]$/
if (!mask.test(field.value)) {
alert(MSG_ALPHA_NUMERIC.replace('%1', name));
try{field.focus();}catch(e){}
return false;
}
return true;
}
function validateNumeric(field, name) {
var val = trim(field.value);
field.value = val;
var mask = /^-?[0-9]*(\.)?[0-9]*$/
if (!mask.test(val)) {
alert(MSG_NUMERIC.replace('%1', name));
try{field.focus();}catch(e){}
return false;
}
return true;
}
function validateUserName(field, name, minLength, maxLength) {
if (!(validateRequiredField(field, name))) {
return false;
}
if (/#|&|'|"|\\|\//.test(field.value)) {
alert(MSG_INVALID_LOGIN.replace('%1', name));
try{field.focus();}catch(e){}
return false;
}
if (!(validateMinLength(field, name, minLength))) {
return false;
}
if (!(validateMaxLength(field, name, maxLength))) {
return false;
}
return true;
}
function isEmpty(field) {
if (field.disabled){return true;}
if (field.type=='checkbox'||(field[0]&&field[0].type == 'checkbox')) {
return !isCheckBoxChecked(field);
}
if (field.type=='radio'||(field[0]&&field[0].type == 'radio')) {
return !isCheckBoxChecked(field);
}
//Try trim - will fail for input type="file".
try
{
field.value = trim(field.value);
}
catch(e) {}
if (field.value.length == 0) {
return true;
}
}
function isCheckBoxChecked(field) {
if (field[0]) {
for (i = 0;i<field.length;i++) {
if (field[i].checked) return true
}
}
return field.checked||false
}
function setFocus(form,field) {
if (form != '') {
try {document.forms[form][field].focus();} catch(e) {}
}
else {
try {document.forms[0][field].focus();} catch(e) {}
}
}
function giveFocus(frm, elm) {
eval("document."+frm+"."+elm+".focus()");
}
function winpop(loc,w,h,scroll) {
var name = loc.replace(/\W/g, "");
window.open(loc,name,'width='+w+', height='+h+', location=no, directories=no, menubar=no, scrollbars='+scroll+', resizable=no, status=no, toolbar=no');
}
function getById(id) {return $('#'+id)[0]}
var getRefToDiv=getById;
function div_show(id) {$('#'+id).show()}
function div_hide(id) {$('#'+id).hide()}
function switchdiv(div1_id, div2_id, form) {
form[div1_id].value=$('#'+div1_id).toggle().is(':visible')
form[div2_id].value=$('#'+div2_id).toggle().is(':visible')
}
function characterCounter(fieldName, maxLength, elementName) {
var field = getById(fieldName);
var value = field.value.replace(/\n/g,'**'); // bug #4830 when the javascript validates it sees \n's and java validates it sees \r\n's so a string may pass javascript validation but fail java validation, solution validate on a copy of the string with all \n's replaced with 2 characters to simulate the java length
getById(elementName).innerHTML = value.length;
}
function trim(str) {
str = new String(str);
return str.replace(/^\s+/,'').replace(/\s+$/,'');
}
function submitForm(form, action) {
form.action = action;
form.submit();
}
function addOnload(f) {
$(window).load(f)
}
function checkEmail(emailStr) {
var emailPat=/^(.+)@(.+)$/;
var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]!%";
var validChars="\[^\\s" + specialChars + "\]";
var quotedUser="(\"[^\"]*\")";
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
var atom=validChars + '+';
var word="(" + atom + "|" + quotedUser + ")";
var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray=emailStr.match(emailPat);
if (matchArray==null) {
return false;
}
var user=matchArray[1];
var domain=matchArray[2];
for (i=0; i<user.length; i++) {
if (user.charCodeAt(i)>127) {
return false;
}
}
for (i=0; i<domain.length; i++) {
if (domain.charCodeAt(i)>127) {
return false;
}
}
if (user.match(userPat)==null) {
return false;
}
var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {
for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
return false;
}
}
return true;
}
var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for (i=0;i<len;i++) {
if (domArr[i].search(atomPat)==-1) {
return false;
}
}
if (domArr[len-1].length < 2) {
return false;
}
if (len<2) {
return false;
}
/*mask=/^(root|abuse|webmaster|help|postmaster|sales|resumes|contact|advertising|spam|spamtrap|nospam|noc|admin|support|daemon|listserve|listserver|autoreply)@/i;
if (mask.test(emailStr.toLowerCase())) {
return false;
}*/
return true;
}
function modFixSelect(element)
{
}
function updateDay(change,formName,yearName,monthName,dayName,fnRefresh,firstValue)
{
var form = document.forms[formName];
var yearSelect = form[yearName];
var monthSelect = form[monthName];
var daySelect = form[dayName];
var year = yearSelect[yearSelect.selectedIndex].value*1;
var month = monthSelect[monthSelect.selectedIndex].value*1;
var day = daySelect[daySelect.selectedIndex].value*1;
if(!year&&!month){
return;
}
if (change == 'month' || (change == 'year' && month == 2))
{
var i = 31;
var flag = true;
while(flag)
{
var date = new Date(year,month-1,i);
if (date.getMonth() == month - 1)
{
flag = false;
}
else
{
i = i - 1;
}
}
daySelect.length = 0;
daySelect.length = i;
var j = 0;
var isUnload = typeof daySelect.unload;
if ( isUnload == 'function'){
daySelect.unload();
}
if (firstValue) {
daySelect[0] = new Option(firstValue,0);
while(j < i){
daySelect[j+1] = new Option(j+1,j+1);
j = j + 1;
}
} else {
while(j < i){
daySelect[j] = new Option(j+1,j+1);
j = j + 1;
}
}
if (day <= i){
if (firstValue) {
daySelect.selectedIndex = day ? day : 0;
}else{
daySelect.selectedIndex = day - 1;
}
}else{
daySelect.selectedIndex = daySelect.length - 1;
}
if (isUnload == 'function')
{
selects(daySelect);
daySelect.init();
}
if(typeof(fnRefresh)=='function'){
fnRefresh();
}
}
}
function checkedCount(field) {
var checked=0;
if (field) {
if (field.length) {
for (var i = 0 ; i < field.length ; i++) {
checked+=(field[i].checked||0);
}
} else {checked+=(field.checked||0)}
}
return checked
}
function isChecked(field) {
return !!checkedCount(field)
}
function isOneChecked(field) {
return checkedCount(field) == 1
}
// AJAX LOADER
function show_load_animation(number) {
$("#load_animation"+(number||"")).css('visibility', 'visible');
}
function hide_load_animation(number) {
$("#load_animation"+(number||"")).css('visibility', 'hidden');
}
// AJAX LOADER
function getElementsByClass(searchClass, tag) {
return $((tag||'')+'.'+searchClass);
}
// IM SOUND
function im_sound(sound) {
xajax_sound(sound^=1);
$('a.sound_link').each(function(){
this.className='sound_link status_'+sound;
this.onclick=function(){im_sound(sound); return false;}
})
}
// WIDGETS
function widget_show(wid, status){
var widget=$('#widget_inner_'+wid);
// save status to database
xajax_widget_show(wid, widget.is('.hidden')*1);
setTimeout(function(){widget.toggleClass('hidden')}, 25)
}
function widget_close(wid, home){
widgetStatusSet(wid, 'closed');
var el=$('#widget_'+wid).delay(300)
.fadeOut(300, function(){el.remove()});
setTimeout(function(){$('.bl_widget_cont', el).addClass('hidden')}, 25);
// radio checked
if (home) return
$('#widget_'+wid+'_off').prop('checked',1);
xajax_widget_close(wid,1);
}
function widget_site(wid){
console.log('widget_site', wid);
if (widgetIsLoaded(wid) != 'loaded' || !$('#widget_'+wid).appendTo('#xajax_im')[0]) {
console.log('widget_site', 'loading');
widgetStatusSet(wid, 'none');
$('#widget_'+wid).remove();
xajax_widget_site(wid);
}
}
function widget_home(wid){
widget_close(wid, 1)
xajax_widget_home(wid);
}
function widget_up(wid){
$('#widget_'+wid).appendTo('#xajax_im')
//xajax_widget_up(wid,widgets_count + 50,z_old);
}
function widget_down(wid,z){
// for(i=1;i<=widgets_site_count;i++) {
// widget = document.getElementById('widget_'+i);
// if(widget) {
// if(i!=wid) {
// if(widget.style.zIndex>z) widget.style.zIndex = widget.style.zIndex-1;
// }
// }
// }
// //alert(wid+"::"+z);
}
function getAbsolutePosition ( elem ) {
var r = {}, pos=$('#'+elem).position();
r = { x:0, y:0 };
elem = document.getElementById(elem);
while (elem) {
r.x += (elem.offsetLeft + elem.clientLeft);
r.y += (elem.offsetTop + elem.clientTop);
elem = elem.offsetParent;
}
// correct position of widget
r.x += 523;
r.y -= 9;
return r;
}
function getAbsolutePositionReal( elem )
{
r = { x:0, y:0 };
elem = document.getElementById( elem );
while ( elem ) {
r.x += ( elem.offsetLeft + elem.clientLeft );
r.y += ( elem.offsetTop + elem.clientTop );
elem = elem.offsetParent;
}
return r;
}
function getWHSizes() {
var w = document.documentElement;
var d = document.body;
h = Math.max( w.scrollHeight, d.scrollHeight, w.clientHeight);
wd = Math.max( w.scrollWidth, d.scrollWidth, w.clientWidth);
return {
ww:w.clientWidth, //window width
wh:w.clientHeight, //window height
wsl:w.scrollLeft, //window scroll left
wst:w.scrollTop, //window scroll top
dw:wd, //document width
dh:h //document height
}
}
function moduleDebugLog(msg, val)
{
var moduleDebugElement = '#module_debug_log';
$(moduleDebugElement).html( msg + ' : ' + val + '<br>' + $(moduleDebugElement).html() );
}
var mobileNotifyUpdaterInterval = false;
var mobileNotifyExclude = '';
function mobileNotifyUpdater()
{
clearInterval(mobileNotifyUpdaterInterval);
url = 'ajax.php?cmd=check_new_items&dummy=' + new Date().getTime() + '&exclude=' + mobileNotifyExclude;
$.get(url, function(data) {
data = trim(data);
if(data != '') {
$('#ichat_status').html(data);
$('#ichat_status').show();
} else {
$('#ichat_status').hide();
}
mobileNotifyUpdaterInterval = setInterval(mobileNotifyUpdater, 10000);
});
}
function alertCustom(msg, shadow, title, handleAlert)
{
var handleAlert = handleAlert||false;
if(typeof(alertHtmlCustom) === 'boolean' && alertHtmlCustom === true) {
if (handleAlert === true) {
alertHandHtml(msg, shadow, title)
} else {
alertHtml(msg, shadow, title);
}
$(window).resize();
} else {
alert(msg);
}
}
function confirmCustom(msg, handler, title)
{
if(typeof(alertHtmlCustom) === 'boolean' && alertHtmlCustom === true) {
confirmHtml(msg, handler, title);
} else {
confirm(msg);
}
}
function confirmHandler(msg, hOk, hCancel, title)
{
if(typeof(alertHtmlCustom) === 'boolean' && alertHtmlCustom === true) {
confirmHtmlHandler(msg, hOk, hCancel, title);
}
}
function siteSetLanguage(language, part)
{
var urlParams = location.search;
var urlParamsStart = '&';
var part = part || 'set_language';
urlParams = removeVariableFromURL(urlParams, part);
if(urlParams == '') {
urlParamsStart = '?';
}
if(urlParams == '?') {
urlParamsStart = '';
}
var urlParamLanguage = urlParamsStart + part + '=' + language;
var url = location.pathname + urlParams + urlParamLanguage + location.hash;
location.href = url;
}
function removeVariableFromURL(url_string, variable_name)
{
var URL = String(url_string);
var regex = new RegExp( "\\?" + variable_name + "=[^&]*&?", "gi");
URL = URL.replace(regex,'?');
regex = new RegExp( "\\&" + variable_name + "=[^&]*&?", "gi");
URL = URL.replace(regex,'&');
URL = URL.replace(/(\?|&)$/,'');
regex = null;
return URL;
}
function addVariableToURL(url, variable)
{
urlParamsStart = '&';
if(url == '') {
urlParamsStart = '?';
}
if(url == '?') {
urlParamsStart = '';
}
url = url + urlParamsStart + variable;
return url;
}
function addUniqueVariableToURL(url, variable, value)
{
var url = removeVariableFromURL(url, variable);
if(url.indexOf('?') === -1) {
url = url + '?';
}
url = addVariableToURL(url, variable + '=' + value);
return url;
}
function equalHeight(group) {
tallest = 0;
group.each(function() {
thisHeight = $(this).height();
if(thisHeight > tallest) {
tallest = thisHeight;
}
});
group.height(tallest);
}
function changeTmplInCycle(tmplCurrent, direction)
{
tmplsCount = tmplsList.length;
indexCurrent = tmplsList.indexOf(tmplCurrent);
if(direction == 'next') {
indexCurrent = indexCurrent + 1;
if(indexCurrent >= tmplsCount) {
indexCurrent = 0;
}
} else {
indexCurrent = indexCurrent - 1;
if(indexCurrent < 0) {
indexCurrent = tmplsCount - 1;
}
}
url = removeVariableFromURL(location.search, 'set_template' + sitePartParam);
location.href = location.pathname + addVariableToURL(url, 'set_template' + sitePartParam + '=' + tmplsList[indexCurrent]) + location.hash;
}
function switchLanguageParamInCurrentUrl()
{
url = removeVariableFromURL(location.search, 'set_language' + sitePartParam);
lang = 'default';
if(siteLanguage == lang) {
lang = languageOfUser;
}
location.href = location.pathname + addVariableToURL(url, 'set_language' + sitePartParam + '=' + lang) + location.hash;
}
var mButtonPressed = false;
function initDevFunctions() {
document.onkeydown = function(e) {
if ($(':focus').is('textarea, :text, :password, [type="email"], [contenteditable]')) return;
e = e || window.event;
var keyCode = (window.event) ? e.which : e.keyCode;
if(e.keyCode) {
keyCode = e.keyCode;
}
keyCode = parseInt(keyCode);
//console.log(keyCode);
if(keyCode == 77) {
mButtonPressed = true;
}
var controlButton = (e.ctrlKey || mButtonPressed);
if (controlButton && (keyCode == 37 || keyCode == 39)) {
switchLanguageParamInCurrentUrl();
}
if (controlButton && keyCode == 38) {
changeTmplInCycle(tmplCurrent, 'prev');
}
if (controlButton && keyCode == 40) {
changeTmplInCycle(tmplCurrent, 'next');
}
};
document.onkeyup = function(e) {
e = e || window.event;
var keyCode = (window.event) ? e.which : e.keyCode;
if(e.keyCode) {
keyCode = e.keyCode;
}
keyCode = parseInt(keyCode);
if(keyCode == 77) {
mButtonPressed = false;
}
};
}
if (!Array.indexOf) {
Array.prototype.indexOf = function (obj, start) {
for (var i = (start || 0); i < this.length; i++) {
if (this[i] === obj) {
return i;
}
}
return -1;
}
}
function setAvatar(avatar)
{
var urlParams = location.href.split('?'),
url = urlParams[0] + '?cmd=setavatar&avatar=' + avatar + '&ajax=1',
checked = $('#setAvatar');
$.get(url, function() {
checked.remove();
$('#btnSelect' + avatar).before(checked);
});
}
function groupEmail(group, incorrect_email, some_email_addresses)
{
var flag = false;
var flag_no = false;
group.each(function (i) {
var email = $.trim($(this).val());
if (checkEmail(email)) {
flag = true;
} else {
if (email != '') {
flag_no = true;
flag = false;
alert(incorrect_email);
$(this).focus();
return false;
}
}
});
if (!flag && !flag_no) {
alert(some_email_addresses);
return false;
}
return flag;
}
function closeRecorder()
{
document.getElementById('rec').style.display = 'none';
}
function showRecorder()
{
document.getElementById('rec').style.display = 'block';
}
function preloadImageInsertInDom(images) {
if (typeof document.body == "undefined") return;
try {
var div = document.createElement("div");
var s = div.style;
s.position = "absolute";
s.top = s.left = 0;
s.visibility = "hidden";
document.body.appendChild(div);
div.innerHTML = "<img src=\"" + images.join("\" /><img src=\"") + "\" />";
var lastImg = div.lastChild;
lastImg.onload = function(){document.body.removeChild(div)};
} catch(e) {
//console.log('Error. preloadImageInsertInDom');
}
}
function preloadImages()
{
var d = document;
if(!d.preload) {
d.preload=new Array();
}
var a = preloadImages.arguments;
for(i = 0; i < a.length; i++)
{
d.preload[i] = new Image();
d.preload[i].src = a[i];
}
}
function preloadImagesWidgets(url)
{
url = url + '_server/widgets/images/';
preloadImages(
url+'w_ico_minimize.png',
url+'w_ico_close.png',
url+'wh_yellow.png',
url+'wh_violet.png',
url+'wh_blue.png',
url+'wh_brown.png',
url+'wh_green.png',
url+'w_calendar.png',
url+'w_calendar_2.png',
url+'w_violet.png',
url+'w_brown.png',
url+'w_green.png',
url+'w_blue.png',
url+'c_today.png',
url+'c_event.png',
url+'c_todayandevent.png',
url+'bl_foto_bg.png',
url+'icon_chat.png',
url+'wh_red.png',
url+'w_greenl.png',
url+'wh_greenl.png',
url+'w_blue_line.png',
url+'wh_grey.png',
url+'wh_brown2.png',
url+'w_yellow_line.png',
url+'switch_t.gif',
url+'switch_b.gif',
url+'note_bg.png'
);
}
function xajax_im_open(uid, e) {
if ($('#xajax_im_open_'+uid)[0]) return reset_opens(uid);
/*var d = document.documentElement,
height = self.innerHeight || (d && d.clientHeight) || document.body.clientHeight,
width = self.innerWidth || (d && d.clientWidth) || document.body.clientWidth;*/
var e = e || window.event,
//h = $(window).height() + siteTopOffset,
w = $(window).width(),
top_im = 0,
left_im = 0;
if (typeof e != 'undefined') {
top_im = e.clientY,
left_im = e.clientX;
}
if ((top_im - h_chat + h_chat_offset) < 0) {
top_im = 0;
} else {
top_im = top_im - h_chat + h_chat_offset;
}
if (w < (left_im + w_chat)) {
left_im = left_im - w_chat;
}
xajax_im_open_new(uid, imMsgLayout, dirTmplMain, left_im, top_im, 'false');
}
function strip_tags(input, allowed) {
allowed = (((allowed || '') + '')
.toLowerCase()
.match(/<[a-z][a-z0-9]*>/g) || [])
.join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,
commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
return input.replace(commentsAndPhpTags, '')
.replace(tags, function($0, $1) {
return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
});
}
function isKeyPressed(e, key_press) {
if(typeof e == 'undefined') {
e = window.event;
}
if (e.keyCode) key = e.keyCode;
else if(e.which) key = e.which;
if (key == key_press) {
return true;
}
return false;
}
function videoResize(box) {
box.find('object, video, iframe').each(function() {
var el = $(this),
newWidth = el.closest(box).width(),
newHeight = newWidth * el.attr('data-aspectRatio');
el.width(newWidth).height(newHeight).find('embed').width(newWidth).height(newHeight);
if(el.closest('.player_custom')[0]){
el.closest('.video-js').width(newWidth).height(newHeight );
}
})
//var newWidth = box.width();
/*box.find('object').each(function() {
var el = $(this),
newWidth = el.parents(box).width(),
newHeight = newWidth * el.attr('data-aspectRatio');
el.width(newWidth).height(newHeight).find('embed').width(newWidth).height(newHeight);
});*/
}
function prepareVideoResize(box) {
box.find('embed, object, video, iframe').each(function() {
$(this).attr('data-aspectRatio', this.height / this.width)
.removeAttr('height')
.removeAttr('width');
});
}
function videoResizeStep() {
globalID = requestAnimationFrame(videoResizeStep);
videoResize($('.groups_video'));
}
function imageResize(box, images, url_files, sfx, index, split)
{
split = split || '_';
index = index || 2;
if (box.css('display') != 'none') {
images.each(function (i) {
var id = $(this).attr('id').split(split),
img = url_files + '/' + id[index];
$(this).attr('src', img + '_' + sfx);
});
}
}
function enterCaret(el, text) {
text=defaultFunctionParamValue(text, '\n');
if(document.selection){
sel = document.selection.createRange();
sel.text = text;
} else if (el.selectionStart || el.selectionStart == '0') {
var start = el.selectionStart, end = el.selectionEnd;
el.value=el.value.substring(0, start)+text+el.value.substring(end, el.value.length);
el.setSelectionRange(++start, start)
} else el.value += text;
$(el).trigger('autosize');
return false;
}
function doOnEnter(fn, isCaret) {
var isCaret=isCaret||0;
return function(e){
if (e.which == 13){
var el=this,
submitOnEnter=!/submitOnEnter=0/.test(document.cookie);//||isMobileBrowser);
if (submitOnEnter && !e.shiftKey && !e.ctrlKey && !e.metaKey ) {
return fn(el);
}
if (e.ctrlKey&&!isCaret) return submitOnEnter?enterCaret(el):fn(el)
}
}
}
function lazyLoadImage(el, is_no_init, speed, placeholder, delay, event) {
var el=el||'img.lazy', is_no_init=is_no_init||false,
event=event||'load',
placeholder=placeholder||'', speed=speed||400,
delay=delay||1;
$(el).show().delay(delay).lazyload({
effect : 'fadeIn',
placeholder: placeholder,
skip_invisible : false,
event : event,
effect_speed: speed
});
if (is_no_init == true) $(el).removeClass('lazy');
}
function choiceChkbox(ch, chkbox) {
if(ch.is(':checked')) {
chkbox.prop("checked", true);
}else{
chkbox.prop("checked", false);
}
}
function getChoiceSelectChkbox(chkbox) {
var StrID = '',
chkbox = chkbox || 'chk';
$('[id ^= '+chkbox+'_]:checked').each(function(){
StrID += ($(this).attr('id').replace(/chk_/g, '')+',')
})
return StrID.slice(0, -1);
}
function actionChecked(page, act, param) {
var StrID = '',
act = act || 'delete',
param = param || '';
$('[id ^= chk_]:checked').each(function(){
StrID += ($(this).attr("id").replace(/chk_/g, '')+',')
})
var items = StrID.slice(0, -1);
window.location.href=page+'?cmd='+act+param+'&item='+items;
}
function widgetStatusSet(wid, status)
{
widgetStatus[wid] = status;
//console.log('widget_status', wid, status);
}
function widgetIsLoaded(wid)
{
var loaded = 'none';
if(wid in widgetStatus) {
loaded = widgetStatus[wid];
}
return loaded;
}
function setWidthOverWrap(id, wrap, offset, param) {
var wrap = wrap || '#hdr',
header = $(wrap),
offset = offset || 75,
param = param || 'width';//'max-width'
if (header.length) {
var newWidth = header.width()-offset;
$(id).css(param, newWidth+'px');
}
}
function isAuthOnly(value) {
if (value == 'please_login') {
var urlLogin='';
if(typeof(urlPageLogin) === 'string' && urlPageLogin !== '') {
urlLogin=urlPageLogin;
}else if(typeof(url_main) === 'string' && url_main !== '') {
urlLogin=url_main;
}else if(typeof(urlMain) === 'string' && urlMain !== '') {
urlLogin=urlMain;
}
if (urlLogin) {
window.location.href = urlLogin;
}
return false;
}
return true;
}
function checkDataAjax(res) {
if(res=='')return false;
try{
var obj = jQuery.parseJSON(res);
if (obj.status && isAuthOnly(obj.data)){return obj.data
}else{return false}
}catch(e){return false}
}
function getDataAjax(res, data) {
var data=data||'page';
if (res == '') {
return false;
}
try{
var obj = jQuery.parseJSON(res);
return (obj.status) ? obj[data] : false;
}catch(e){return false}
}
function postAjax(url, param, fnc) {
$.post(url, param, fnc);
}
function setCenteringPopup(popup, top) {
var windowWidth=document.documentElement.clientWidth,
windowHeight=document.documentElement.clientHeight,
popupHeight=popup.height(),
popupWidth=popup.width(),
top=alertHtmlTop||(windowHeight/2-popupHeight/2);
popup.css({position: "fixed",
top: top,
left: windowWidth/2-popupWidth/2
});
}
function removeSubmissionBlock()
{
blockSubmission = false;
}
function insertFromDataHtmlToHtml(data, dataBlocks)
{
var dataBlock = '';
for(var dataBlocksKey in dataBlocks) {
dataBlock = $(data).filter(dataBlocksKey);
if(dataBlock[0]) {
$(dataBlocks[dataBlocksKey]).html(dataBlock.html());
}
}
}
function showTipFromData(data, dataBlocks, btn)
{
var dataBlock = '';
for(var dataBlocksKey in dataBlocks) {
dataBlock = $(data).filter(dataBlocksKey);
if(dataBlock.length) {
customShowTip(dataBlocks[dataBlocksKey],btn,dataBlock.text())
}
}
}
function partnerCheckboxCheckUncheck(checkboxArea)
{
var checkboxArea = checkboxArea || '.checkbox_fields_area input[type="checkbox"]';
$(document).ready(function() {
$(checkboxArea).click(function(){
var currentCheckboxValue = $(this).val();
var currentCheckboxName = $(this).attr('name');
$('input[name="' + currentCheckboxName + '"]').each(function(){
if(currentCheckboxValue != 0) {
if($(this).attr('value') == 0) {
$(this).attr('checked', false);
}
} else {
if($(this).attr('value') != 0) {
$(this).attr('checked', false);
}
}
});
});
});
}
var videoPlayers={};
if (window.jQuery) {
partnerCheckboxCheckUncheck();
$.preloadImages = function () {
if (typeof arguments[arguments.length - 1] == 'function') {
var callback = arguments[arguments.length - 1];
} else {
var callback = false;
}
if (typeof arguments[0] == 'object') {
var images = arguments[0];
var n = images.length;
} else {
var images = arguments;
var n = images.length - 1;
}
var not_loaded = n;
for (var i = 0; i < n; i++) {
$(new Image()).load(function() {
if (--not_loaded < 1 && typeof callback == 'function') {
callback();
}
}).attr('src', images[i]);
}
}
$.fn.toggleDisabled = function(limit,rang) {
return this.each(function(){
if(rang){
if(this.value>limit){this.disabled=true}
else{this.disabled=false}
}else{
if(this.value<limit){this.disabled=true}
else{this.disabled=false}
}
});
};
function initCustomVideoPlayer(id, vol) {
videoPlayers[id]=videojs('#user_video_'+id).ready(function(){
var pl=$('#user_video_'+id),
blWall=pl.closest('.blogs_video_player_custom, .player_custom');
if(blWall[0]){
blWall.addClass('to_show');
}
this.volume(vol);
this.on('volumechange',function(){
if(this.muted()){
this.volume(0);
}
setCookie('videojs_volume', this.volume());
}).on('fullscreenchange', function(){
var blWillChange=pl.closest('.wall_item');
if(blWillChange[0]){
var isWillChange=blWillChange.css('will-change')=='unset';
blWillChange.css('will-change', isWillChange?'transform':'unset');
}
}).on('ended', function() {
this.load();
this.pause();
});
})
}
function initCustomVideoPlayerAdmin(id, vol) {
videojs('#user_video_'+id).ready(function(){
var pl=$('#user_video_'+id),
blWall=pl.closest('.player_custom');
if(blWall[0]){
blWall.addClass('to_show');
}
this.volume(vol);
this.on('ended', function() {
this.load();
this.pause();
}).on('volumechange',function(){
if(this.muted()){
this.volume(0);
}
setCookie('videojs_volume', this.volume());
});
})
}
function initNativeVideoPlayer(id) {
var pl=document.getElementById('user_video_'+id),
$pl=$('#user_video_'+id);
videoPlayers[id]=pl;
pl.volume=getVolumeVideoPlayer();
pl.onvolumechange=function(){
if(this.muted){
this.volume=0;
}
setCookie('videojs_volume', this.volume);
};
pl.onended=function(){
$pl.removeAttr('autoplay');
this.load();
//this.pause();
};
pl.onloadedmetadata=function(){
var $gallery=$('.bl_photo_one', '#pp_gallery_photo_one_cont');
$gallery[0]&&$gallery.addClass('ready');
};
if (detectApiFullScreen()) {
var blChange=$pl.closest('.wall_item, .bl_video_one_cont'),isChange;
blChange=$pl.closest('.wall_item, .pp_wrapper');
if(blChange[0]){
changeFullScreen(pl,function(){
isChange=blChange.css('will-change')=='unset';
blChange.css('will-change', isChange?'transform':'unset');
})
}
}
}
}
function getVolumeVideoPlayer()
{
var volume=$.cookie('videojs_volume');
if(volume>1){
volume=((volume/100).toFixed(1));//Fix
}else if(!volume) {
volume=0.7;
}
return volume;
}
function defaultFunctionParamValue(param, value)
{
if (typeof param === 'undefined') {
param = value;
}
return param;
}
function setCaretToPos(input, pos) {
var input = document.getElementById(input),
selectionEnd = pos,
selectionStart = pos;
if (input.setSelectionRange) {
input.focus();
input.setSelectionRange(selectionStart, selectionEnd);
}
else if (input.createTextRange) {
var range = input.createTextRange();
range.collapse(true);
range.moveEnd('character', selectionEnd);
range.moveStart('character', selectionStart);
range.select();
}
}
function getRandomInt(min, max){
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function in_array(needle, haystack, argStrict) {
var key = '',
strict = !! argStrict;
if (strict) {
for (key in haystack) {
if (haystack[key] === needle) {
return true;
}
}
} else {
for (key in haystack) {
if (haystack[key] == needle) {
return true;
}
}
}
return false;
}
function in_array_key(needle, haystack, argStrict) {
var key = '',
strict = !! argStrict;
if (strict) {
for (key in haystack) {
if (key === needle) {
return true;
}
}
} else {
for (key in haystack) {
if (key == needle) {
return true;
}
}
}
return false;
}
function arraysEqual(a, b) {
if (a === b) return true;
if (a == null || b == null) return false;
if (a.length != b.length) return false;
for (var i = 0; i < a.length; ++i) {
if (a[i] != b[i]) return false;
}
return true;
}
function detectApiFullScreen() {
return document.fullscreenEnabled
|| document.webkitFullscreenEnabled
|| document.msFullscreenEnabled
|| document.mozFullScreenEnabled;
}
function isFullScreen() {
var result=true;
if (!document.fullscreenElement &&
!document.webkitFullscreenElement &&
!document.msFullscreenElement &&
!document.mozFullScreenElement) {
result=false;
}
return result;
}
function toggleFullScreen(el) {
if (!document.fullscreenElement &&
!document.webkitFullscreenElement &&
!document.msFullscreenElement &&
!document.mozFullScreenElement) {
if (el.requestFullscreen) {
el.requestFullscreen();
} else if (el.webkitRequestFullscreen) {
el.webkitRequestFullscreen();
} else if (el.msRequestFullscreen) {
el.msRequestFullscreen();
} else if (el.mozRequestFullScreen) {
el.mozRequestFullScreen();
}
} else {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
}
}
}
function changeFullScreen(el, onfullscreenchange) {
el.addEventListener("webkitfullscreenchange", onfullscreenchange);
el.addEventListener("mozfullscreenchange", onfullscreenchange);
el.addEventListener("MSFullscreenChange", onfullscreenchange);
el.addEventListener("fullscreenchange", onfullscreenchange);
}
function playSound(sound){
if (typeof soundManager != 'undefined' && typeof urlMain != 'undefined') {
var sound=sound||'pop_sound_chat.mp3';
/*soundManager.setup({url: urlMain+'_server/js/sound/',
onready: function() {
var mySound = soundManager.createSound({
id: 'aSound',
url: urlMain+'_server/im_new/sounds/'+sound
});
mySound.play();
}
})*/
var soundPlay = soundManager.createSound({url: urlMain+'_server/im_new/sounds/'+sound});
soundPlay.play();
}
}
function nl2br(str, is_xhtml) {
var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br ' + '/>' : '<br>';
return (str + '')
.replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');
}
function strToHtml(str) {
str = str.replace(/</g, "<");
return nl2br(str);
}
function webglDetect(){
try {
return !!window.WebGLRenderingContext && !! document.createElement('canvas').getContext('experimental-webgl');
} catch (e) {
return false;
}
}
function mobileAppNotification(id, text, type, title)
{
if(!mobileAppLoaded || !id) {
return;
}
title = title || appTitle;
if(app.activeStatus == undefined || !app.activeStatus)
{
navigator.vibrate(appVibrationDuration);
type = type || 'im';
var notificationParams = {
id: id,
title: title,
text: text,
data: type,
}
if(device.platform != 'Android') {
notificationParams['sound'] = 'res://sound.caf';
notificationParams['title'] = '';
}
cordova.plugins.notification.local.on("click", function(notification) {
// don't show and redirect if chat already active
var urls = {im : 'messages.php?display=one_chat&user_id=' + notification.id,
city : urlCity + 'index.php?view=mobile&from=' + notification.id,
}, url = '';
if (notification.data == 'im' && appCurrentImUserId != notification.id){
url = urls.im;
/*} else if (notification.data == 'city'){
var is = 0;
for (var k in appCityListUser){
if (appCityListUser[k]['id'] == notification.id){
is = 1;
break;
}
}
if (!is) {
url = urls.city;
}*/
} else if (urls[notification.data]) {
url = urls[notification.data];
}
if (url) {
appPreloaderShow();
setTimeout(function(){document.location.href = url;}, 100);
}
});
cordova.plugins.notification.local.schedule(notificationParams);
}
}
function mobileAppCityNotification(data)
{
if (!mobileAppLoaded || !isWebglDetect || !data.id || !data.uid) return;
if (appCityLastMsgId < data.id) {
mobileAppNotification(data.uid, data.message, 'city');
appCityLastMsgId = data.id;
}
}
function setCookie(name, value, options) {
options=options||{};
var expires = options.expires;
if (typeof expires == "number" && expires) {
var d = new Date();
d.setTime(d.getTime() + expires * 1000);
expires=options.expires=d;
}
if (expires && expires.toUTCString) {
options.expires=expires.toUTCString();
}
value=encodeURIComponent(value);
var updatedCookie = name + "=" + value;
for (var propName in options) {
updatedCookie += "; " + propName;
var propValue = options[propName];
if (propValue !== true) {
updatedCookie += "=" + propValue;
}
}
document.cookie = updatedCookie;
}
function supportWebrtc(){
var support=true;
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
if (navigator.getUserMedia) {
//Хром только так можно проверить наверняка на предмет доступа но тогда камера включается
/*navigator.getUserMedia({audio:true,video:true},function(stream){},
function(err) {
support=false;
//console.log("The following error occurred: " + err.name);
})*/
if(/Chrome/i.test(navigator.userAgent)
&&window.location.protocol!='https:'
&&window.location.host!='localhost'){
support='ssl';
}
} else {
//console.log("getUserMedia not supported");
support=false;
}
return support;
}
function checkWebrtc(){
var is=supportWebrtc();
if(is=='ssl')is=false;
return is;
}
/* Redirect URL */
function redirectToLoginPage() {
var url;
if (typeof urlPageLogin=='undefinded') {
url=urlPagesSite.login;
} else {
url=urlPageLogin;
}
redirectUrl(url);
}
function redirectRequiresAuth(data) {
if(data == 'please_login') {
redirectToLoginPage();
return true;
}
return false;
}
function redirectUrl(href){
window.location.href=href;
}
function redirectToLogin(){
window.location.href=url_main+urlPageLogin;
}
function redirectToUpgrade(param){
var url;
param=param||'';
if(param){
param='?'+param;
}
if (typeof urlPageUpgrade=='undefinded') {
url=urlPagesSite.upgrade;
} else {
url=urlPageUpgrade;
}
window.location.href=url_main+url+param;
}
function checkLoginStatus(){
if (!ajax_login_status) {
redirectToLogin();
return false;
}
return true;
}
function goLink(url,params){
params=params||'';
var f=document.createElement('form');
f.method='POST';
f.action=url;
if(params){
params=params.split('&');
for (var key in params) {
var param=params[key].split('=');
var i=document.createElement('input');
i.setAttribute('type','hidden');
i.setAttribute('name',param[0]);
i.value=param[1];
f.appendChild(i);
}
}
document.body.appendChild(f);
f.submit();
}
function replaceUrl(url){
if(window.history && history.pushState){
url=url||'';
//url=url||window.location.href;
if(url){
history.replaceState(history.state, document.title, url);
}else{
history.replaceState(history.state, document.title);
}
}
}
/* Redirect URL */
function setAjaxPrefilter() {
var isParamTmpl = (typeof tmplCurrent === 'string') && (typeof sitePartParam === 'string') && (typeof sitePart === 'string');
var isSiteGuid = typeof siteGuid === 'string';
if ((isParamTmpl || isSiteGuid) && (typeof $.ajaxPrefilter !== 'undefined')) {
$.ajaxPrefilter(function(options) {
if (isParamTmpl) {
options.url = addUniqueVariableToURL(options.url, 'set_template' + sitePartParam + '_runtime', tmplCurrent);
options.url = addUniqueVariableToURL(options.url, 'site_part_runtime', sitePart);
}
if (isSiteGuid) {
options.url = addUniqueVariableToURL(options.url, 'site_guid', siteGuid*1);
}
})
}
$.ajaxSetup({
cache: true
})
}
function l(key) {
if(typeof siteLangParts!=='object')return '';
var page='all';
if(typeof currentPage!=='undefined')page=currentPage;
if(siteLangParts[page]&&siteLangParts[page][key]) {
return siteLangParts[page][key];
}
if(page!=='all'&&siteLangParts['all']&&siteLangParts['all'][key]){
return siteLangParts['all'][key];
}
return '';
}
function colorRgbToHex(colorRgb)
{
var colorPartsRgb = colorRgb.match(/(\d+),\s*(\d+),\s*(\d+)/);
var colorPartsHex = [];
for (var i = 1; i <= 3; i++) {
colorPartsHex[i] = parseInt(colorPartsRgb[i]).toString(16);
if (colorPartsHex[i].length == 1) {
colorPartsHex[i] = '0' + colorPartsHex[i];
}
}
var colorHex = '#' + colorPartsHex.join('');
return colorHex;
}
function centerItemInArea(itemWidth, itemHeight, areaWidth, areaHeight)
{
var horizontalGap, verticalGap;
var itemWidthNew = itemWidth;
var itemHeightNew = itemHeight;
var itemProportion = itemWidth / itemHeight;
// make smaller if more then container
if(itemHeight > areaHeight) {
itemHeightNew = areaWidth;
itemWidthNew = itemHeightNew * itemProportion;
}
if(itemWidth > areaWidth) {
itemWidthNew = areaWidth;
itemHeightNew = itemWidthNew / itemProportion;
}
// make bigger if less then container
if(areaHeight * itemProportion < areaWidth) {
itemHeightNew = areaHeight;
itemWidthNew = itemHeightNew * itemProportion;
} else if(areaWidth / itemProportion < areaHeight) {
itemWidthNew = areaWidth;
itemHeightNew = itemWidthNew / itemProportion;
} else {
// max to borders
var areaProportion = areaWidth / areaHeight;
if(areaProportion < 1) {
itemHeightNew = areaHeight;
itemWidthNew = itemHeightNew;
} else {
itemWidthNew = areaWidth;
itemHeightNew = itemWidthNew / itemProportion;
}
}
verticalGap = (areaHeight - itemHeightNew) / 2;
horizontalGap = (areaWidth - itemWidthNew) / 2;
var result = {
'width' : itemWidthNew,
'height' : itemHeightNew,
'horizontalGap' : horizontalGap,
'verticalGap' : verticalGap
};
//console.log(result);
return result;
}
function centerItemInAreaByHeightWithCrop(itemWidth, itemHeight, areaWidth, areaHeight)
{
var horizontalGap, verticalGap;
var itemWidthNew = itemWidth;
var itemHeightNew = itemHeight;
var itemProportion = itemWidth / itemHeight;
itemHeightNew = areaHeight;
itemWidthNew = itemHeightNew * itemProportion;
if(itemWidthNew < areaWidth) {
itemWidthNew = areaWidth;
itemHeightNew = itemWidthNew / itemProportion;
}
verticalGap = (areaHeight - itemHeightNew) / 2;
horizontalGap = (areaWidth - itemWidthNew) / 2;
var result = {
'width' : itemWidthNew,
'height' : itemHeightNew,
'horizontalGap' : horizontalGap,
'verticalGap' : verticalGap
};
//console.log(result);
return result;
}
function onLoadImgToShow(url,$bl,call) {
var $img=$('<img>').one('load error', function(){
if(typeof call=='function'){
call()
}else{
$bl.addClass('to_show')
}
})[0].src=url;
if($img[0].complete)$img.load();
}
function getEmojiRegExp() {
var emojiRanges = [
'(?:\uD83C[\uDDE6-\uDDFF]){2}', // флаги
'[\u0023-\u0039]\u20E3', // числа
'(?:[\uD83D\uD83C\uD83E][\uDC00-\uDFFF]|[\u270A-\u270D\u261D\u26F9])\uD83C[\uDFFB-\uDFFF]', // цвет кожи
'\uD83D[\uDC68\uDC69][\u200D\u200C].+?\uD83D[\uDC66-\uDC69](?![\u200D\u200C])', // семья
'[\uD83D\uD83C\uD83E][\uDC00-\uDFFF]', // суррогатная пара
'[\u3297\u3299\u303D\u2B50\u2B55\u2B1B\u27BF\u27A1\u24C2\u25B6\u25C0\u2600\u2705\u21AA\u21A9]', // обычные
'[\u203C\u2049\u2122\u2328\u2601\u260E\u261d\u2620\u2626\u262A\u2638\u2639\u263a\u267B\u267F\u2702\u2708]',
'[\u2194-\u2199]',
'[\u2B05-\u2B07]',
'[\u2934-\u2935]',
'[\u2795-\u2797]',
'[\u2709-\u2764]',
'[\u2622-\u2623]',
'[\u262E-\u262F]',
'[\u231A-\u231B]',
'[\u23E9-\u23EF]',
'[\u23F0-\u23F4]',
'[\u23F8-\u23FA]',
'[\u25AA-\u25AB]',
'[\u25FB-\u25FE]',
'[\u2602-\u2618]',
'[\u2648-\u2653]',
'[\u2660-\u2668]',
'[\u26A0-\u26FA]',
'[\u2692-\u269C]'
];
return new RegExp(emojiRanges.join('|'), 'g');
}
function emojiToHtml(str) {
str = str.replace(/\uFE0F/g, '');
return str.replace(getEmojiRegExp(), extractEmojiToCodePoint);
}
function extractEmojiToCodePoint(emoji) {
var code = emoji
.split('')
.map(function (symbol, index) {
return emoji.codePointAt(index).toString(16);
})
.filter(function (codePoint) {
return !isEmojiSurrogatePair(codePoint);
}, this)
.join('-');
return '&#' + parseInt(code, 16) + ';';
}
function isEmojiSurrogatePair(codePoint) {
codePoint = parseInt(codePoint, 16);
return codePoint >= 0xD800 && codePoint <= 0xDFFF;
}
function setOptionsSite(options){
siteOptions={};
if(typeof options==='object'){
siteOptions=options;
}
}
function isSiteOptionActive(option, key){
key=key||'options';
if(typeof siteOptions!=='object'||typeof siteOptions[key]=='undefined'||typeof siteOptions[key][option]=='undefined')return false;
return siteOptions[key][option] === 'Y';
}
function getSiteOption(option, key){
key=key||'options';
if(typeof siteOptions!=='object'||typeof siteOptions[key]=='undefined'||typeof siteOptions[key][option]=='undefined')return null;
return siteOptions[key][option];
}
function iOSversion(fullVer) {
if (!!navigator.platform && /iP(hone|od|ad)/i.test(navigator.platform)) {
fullVer=fullVer||0;
var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
if(fullVer){
return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)]
}else{
return parseInt(v[1], 10)
}
}
return 0;
}
var infoBrowserWebRtc = null;
function detectBrowserWebRtc(){
if (infoBrowserWebRtc !== null) {
return infoBrowserWebRtc;
}
var navigator = window && window.navigator;
var extractVersion = function(uastring, expr, pos) {
var match = uastring.match(expr);
return match && match.length >= pos && parseInt(match[pos], 10);
}
// Returned result object.
var result = {};
result.browser = null;
result.version = null;
// Fail early if it's not a browser - Not a browser.
if (typeof window === 'undefined' || !window.navigator) {
result.browser = '';
infoBrowserWebRtc = result;
return result;
}
// Firefox.
if (navigator.mozGetUserMedia) {
result.browser = 'firefox';
result.version = extractVersion(navigator.userAgent,
/Firefox\/(\d+)\./, 1);
} else if (navigator.webkitGetUserMedia) {
// Chrome, Chromium, Webview, Opera, all use the chrome shim for now
if (window.webkitRTCPeerConnection) {
result.browser = 'chrome';
result.version = extractVersion(navigator.userAgent,
/Chrom(e|ium)\/(\d+)\./, 2);
} else { // Safari (in an unpublished version) or unknown webkit-based.
if (navigator.userAgent.match(/Version\/(\d+).(\d+)/)) {
result.browser = 'safari';
result.version = extractVersion(navigator.userAgent,
/AppleWebKit\/(\d+)\./, 1);
} else { // unknown webkit-based browser.
//Unsupported webkit-based browser with GUM support but no WebRTC support.
result.browser = '';
infoBrowserWebRtc = result;
return result;
}
}
} else if (navigator.mediaDevices &&
navigator.userAgent.match(/Edge\/(\d+).(\d+)$/)) { // Edge.
result.browser = 'edge';
result.version = extractVersion(navigator.userAgent,
/Edge\/(\d+).(\d+)$/, 2);
} else if (navigator.mediaDevices &&
navigator.userAgent.match(/AppleWebKit\/(\d+)\./)) {
// Safari, with webkitGetUserMedia removed.
result.browser = 'safari';
result.version = extractVersion(navigator.userAgent,
/AppleWebKit\/(\d+)\./, 1);
} else { // Default fallthrough: not supported.
result.browser = '';
}
infoBrowserWebRtc = result;
return result;
}
function iSIOSSafariWebRTC(infoCurrentBrowser) {
var iOSVer=iOSversion();
infoCurrentBrowser = infoCurrentBrowser || detectBrowserWebRtc();
return iOSVer>10 && infoCurrentBrowser.browser == 'safari';
}
function iSMacOSSafariWebRTC(infoCurrentBrowser) {
infoCurrentBrowser = infoCurrentBrowser || detectBrowserWebRtc();
return !!navigator.platform.match(/^Mac/i) && infoCurrentBrowser.browser == 'safari';
}
if (window.jQuery) {
$.fn.autocolumnlist = function(params){
var defaults = {
columns: 4,
classname: 'column',
min: 1,
clickEmpty:function(){}
};
var options = $.extend({}, defaults, params);
return this.each(function() {
options.columns *=1;
var data_parameters = $(this).data(), i;
if ( data_parameters ) {
$.each(data_parameters, function (key, value) {
options[key] = value;
});
}
var $el=$(this), els = $el.find('> li');
var dimension = els.length;
if (dimension > 0) {
var elCol = Math.ceil(dimension/options.columns);
if (elCol < options.min) {
elCol = options.min;
}
var start = 0, end = elCol, j=0, m=0;
for (i=0; i<options.columns; i++) {
if ((i + 1) == options.columns) {
j++;
var cl=options.classname + ' cm_last';
if(options.columns==1){
cl=options.classname + ' cm_first';
}
els.slice(start, end).wrapAll('<div class="'+cl+'" />');
var $last=$el.find('.cm_last'), lEmpty=elCol-$last.find('li').length;
if(lEmpty){
for (j=0; j<lEmpty; j++) {
$('<li class="li_empty"><a href=""></a></li>')
.appendTo($last).
on('click', function(){
options.clickEmpty();
return false;
})
}
}
} else {
var cl=options.classname;
if (!m) {
cl += ' cm_first';
}
m++;
els.slice(start, end).wrapAll('<div class="'+cl+'" />');
}
start = start+elCol;
end = end+elCol;
}
}
});
};
//data-cl-loader="btn_action_loader" data-no-fade-in="true" data-cl-children=".name"
$.fn.addChildrenLoader = function(){
var $btn=$(this);
if($btn.is('.add_loader_transparent')||$btn.is('.add_loader'))return;
var clLoader=$btn.data('clLoader');
if(!clLoader)clLoader='btn_action_loader';
var clBtn=$btn.data('clBtn');
if(clBtn)$btn.addClass(clBtn);
if(!$btn.data('noFadeIn')){
$btn.addClass('add_loader').append(createLoader(clLoader,true,true).delay(1).removeClass('hidden',0));
if($btn.data('clChildren')){
$btn.find($btn.data('clChildren')).siblings(':not(.css_loader)').stop().fadeTo(200,0);
}else{
$btn.children('button, .frame').stop().fadeTo(200,.5);
$btn.children(':not(.css_loader)').not('button, .frame').stop().fadeTo(200,0);
}
}else{
$btn.addClass('add_loader_transparent').append(createLoader(clLoader,false,true));
}
return $btn;
}
$.fn.removeChildrenLoader = function(){
var $btn=$(this);
var fnDisabled=function(){
$btn.data('disabled')&&$btn.prop('disabled', false);
}
if($btn.is('.add_loader_transparent')||$btn.is('.add_loader')){
var clBtn=$btn.data('clBtn');
if(clBtn)$btn.removeClass(clBtn);
if($btn.is('.add_loader')){
if($btn.data('clChildren')){
$btn.find($btn.data('clChildren')).siblings().stop().fadeTo(200,1,function(){
$btn.find('.css_loader').remove();
$btn.removeClass('add_loader');
fnDisabled();
})
}else{
$btn.children(':not(.css_loader)').stop().fadeTo(200,1,function(){
$btn.find('.css_loader').remove();
$btn.removeClass('add_loader');
fnDisabled();
})
}
$btn.find('.css_loader').oneTransEnd(function(){
$(this).remove();
}).addClass('hidden',0);
}else{
$btn.find('.css_loader').remove();
$btn.removeClass('add_loader_transparent');
fnDisabled();
}
}
return $btn;
}
}
function $jq(sel,context){
context=context||false;
var key=sel;
if(context!==false){
key=sel+'_'+context;
}
if(typeof cacheElement[key] == 'undefined' || !cacheElement[key][0]){
if(context){
cacheElement[key]=$(sel,context);
}else{
cacheElement[key]=$(sel);
}
}
return cacheElement[key];
}
function createLoader(cl,isHide,isWhite){
cl=cl||'';
isHide&&(cl=cl+' hidden');
var clSpin=isWhite?'spinnerw':'',
$loader=$('<div class="css_loader '+cl+'">'+
'<div class="spinner center '+clSpin+'">'+
'<div class="spinner-blade"></div>'+
'<div class="spinner-blade"></div>'+
'<div class="spinner-blade"></div>'+
'<div class="spinner-blade"></div>'+
'<div class="spinner-blade"></div>'+
'<div class="spinner-blade"></div>'+
'<div class="spinner-blade"></div>'+
'<div class="spinner-blade"></div>'+
'<div class="spinner-blade"></div>'+
'<div class="spinner-blade"></div>'+
'<div class="spinner-blade"></div>'+
'<div class="spinner-blade"></div>'+
'</div>'+
'</div>');
return $loader;
}
/* Log In */
function initLoginFrmSite($blForm, fnHideError) {
if (!$blForm[0]) return;
var $btnSubmit=$("button, input[type='submit']", $blForm);
$("input[name='user'], input[name='password']", $blForm).on('change propertychange input',function(){
if(typeof fnHideError=='function'){
fnHideError()
}
$btnSubmit.prop('disabled', false);
}).keydown(doOnEnter(function(){
if(typeof fnHideError=='function'){
fnHideError()
}
$btnSubmit.click()
}))
}
function loginInSite($btnSubmit, $blForm, fn) {
var $controls=$("input[name='user'], input[name='password'], input[name='remember']", $blForm).add($btnSubmit),
$name=$("input[name='user']", $blForm),
$pass=$("input[name='password']", $blForm),
$remember=$("input[name='remember']", $blForm);
if (typeof fn!= 'function'){
fn = alertCustom;
}
if($blForm.data('submit'))return;
$blForm.data('submit', true);
$controls.prop('disabled', true);
$name.val($.trim($name.val()));
var data={user:$name.val(), password:$pass.val()};
if($remember.prop('checked'))data.remember=1;
$btnSubmit.addChildrenLoader();
$.post(url_ajax+'?cmd=login&ajax=1',data,function(res){
$blForm.data('submit', false);
if(res.substring(0, 11) == '#js:logged:') {
redirectUrl(res.substring(11));
return false;
}
if(res.substring(0, 10) == '#js:error:') {
$btnSubmit.removeChildrenLoader();
$controls.prop('disabled', false);
fn(res.substring(10));
return false;
}
redirectUrl('index.php');
})
return false;
}
/* Log In */
/* Profile settings */
function disabledControlsProfileSettingsFrm($blSettings,is){
is=is||false;
$jq('input, select, button.btn_save',$blSettings).not('[type="hidden"]').prop('disabled',is);
}
function initProfileDelete($blForm, fnShowError, fnHideError, fnConfirm) {
$blForm=$blForm||$('#fields_7');
var $blSettings=$jq('#bl_forms_settings'),
$btn=$('button.btn_save',$blForm),
$cmd=$("input[type='hidden']", $blForm),
$controls=$("input[name='password'], button.btn_save", $blForm);
$blForm.data('values',{});
if (typeof fnShowError!= 'function'){
fnShowError = alertCustom;
}
if (typeof fnConfirm!= 'function'){
fnConfirm = confirmCustom;
}
function setDisabledBtn(){
var is=$pass.val()==''||$pass.is('.wrong');
$btn.prop('disabled',is);
}
var $pass=$jq("input[type='password']",$blForm)
.on('change propertychange input', function(e){
var val=this.value,ln=val.length;
if(~val.indexOf("'")<0){
fnShowError($(this),l('invalid_password_contain'));
}else if($blForm.data('change')&&(ln<settingsData.passLenMin||ln>settingsData.passLenMax)) {
fnShowError($(this),settingsData.minMaxLenPass);
} else {
if(typeof fnHideError=='function'){
fnHideError($(this))
}
}
setDisabledBtn();
}).keydown(function(e){
if(e.keyCode==13) {
$btn.click();
return false;
}
})
$btn.click(function(){
if($blForm.data('submit'))return;
$blForm.data('submit', true);
var cmd=$cmd.val();
$controls.prop('disabled', true);
if(cmd=='check_password'){
var val=$pass.val(),ln=val.length;
$blForm.data('change', true);
if(ln<settingsData.passLenMin||ln>settingsData.passLenMax) {
$blForm.data('submit', false);
$pass.prop('disabled', false);
fnShowError($pass,settingsData.minMaxLenPass);
return false;
}
$blForm.data('values',{ajax:1,password:val});
}
var data=$blForm.data('values');
data.cmd=cmd;
$pass.val('');
$btn.addChildrenLoader();
$blSettings.data('change',true);
disabledControlsProfileSettingsFrm($blSettings,true);
$.post(url_main+'profile_settings.php',data,
function(res){
$controls.prop('disabled',false);
var data=checkDataAjax(res);
if(data!==false){
var $data=$(data);
if($data.is('error')){
fnShowError($pass,$data.text());
}else if(data=='check'){
$pass.prop('disabled',true);
fnConfirm(l('the_profile_will_be_deleted_forever'), function(){
$cmd.val('profile_delete');
$btn.addChildrenLoader().click().prop('disabled',true);
closeAlert();
},function(){
$pass.prop('disabled',false);
closeAlert();
});
}else if(data=='delete'){
redirectUrl(url_main+'index.php');
}else if(data=='demo') {
console.log('DEMO USER NO DELETE');
}
}
$cmd.val('check_password');
$btn.removeChildrenLoader();
$blForm.data('submit', false);
$blSettings.data('change',false);
disabledControlsProfileSettingsFrm($blSettings);
})
return false;
})
}
function checkModifiedSettingsData($blForm) {
$blForm=$blForm||$('#frm_profile_settings');
if($blForm.data('submit')){
return false
}else{
return $('button.btn_save',$blForm).not(':disabled')[0]
}
}
function initProfileChangeSettings($blForm) {
$blForm=$blForm||$('#frm_profile_settings');
var $blSettings=$jq('#bl_forms_settings'),
$btn=$('button.btn_save',$blForm);
$blForm.data('values',{});
function setSettingsData(){
$('input:radio:checked, select',$blForm).each(function(){
var data=$blForm.data('values');
data[this.name]=this.value;
$blForm.data('values',data);
})
}
setSettingsData();
function isModifiedSettingsData(){
var is=0,data=$blForm.data('values');
$('input:radio:checked, select',$blForm).each(function(){
is|=(this.value!=data[this.name])
})
return is;
}
function setDisabledSettingsBtn() {
$btn.prop('disabled',!isModifiedSettingsData());
}
$('input:radio, select',$blForm).on('change',setDisabledSettingsBtn);
$btn.click(function(){
$blForm.data('this_btn',$(this));
})
function saveSettingsResponse(res){
var data=checkDataAjax(res);
if(data!==false){
var info=$blForm.data('values');
if(info.set_language!=$("select[name='set_language']",$blForm).val()){
alertCustomRedirect(urlPagesSite.profile_settings,data.msg,data.title);
} else {
setSettingsData();
alertCustom(l('changes_saved'),l('alert_success'));
}
}
$blForm.data('submit', false);
$blForm.data('this_btn').removeChildrenLoader();
disabledControlsProfileSettingsFrm($blSettings);
setDisabledSettingsBtn();
}
$blForm.submit(function(){
if (!isModifiedSettingsData()||$blForm.data('submit')) return false;
$blForm.data('submit', true);
$blForm.data('this_btn').addChildrenLoader();
$(this).ajaxSubmit({success:saveSettingsResponse});
disabledControlsProfileSettingsFrm($blSettings,true);
return false;
})
}
/* Profile settings */
/* Contact us */
function initContactUs($blForm, fnSuccess, fnError, fnErrorHide) {
var $email=$("input[name='contact_email']", $blForm),
$name=$("input[name='contact_username']", $blForm),
$msg=$("textarea[name='contact_comment']", $blForm),
$captcha=$("input[name='contact_captcha']", $blForm);
if (typeof fnSuccess!= 'function'){
fnSuccess = function(){
alertCustom(l('message_sent'))
};
}
if (typeof fnError!= 'function'){
fnError = alertCustom;
}
if (typeof fnErrorHide!= 'function'){
fnErrorHide = closeAlert;
}
var $controls=$('input, textarea', $blForm)
.on('change propertychange input',function(){
if(!isSubmit)return;
if (this.name=='contact_email') {
if (checkEmail(trim(this.value))) {
fnErrorHide(this)
} else {
fnError($(this), l('incorrect_email'));
}
} else {
fnErrorHide(this)
}
}).on('focus',focusError).on('blur',blurError);
var fnCheckData=function(){
var is=false;
$controls.each(function(){
if (this.name=='contact_email') {
if (!checkEmail(trim(this.value))) {
fnError($(this), l('incorrect_email'), is);
is=true;
}
}else if(trim(this.value)==''){
fnError($(this), l('required_field'), is);
is=true;
}
})
if (isRecaptchaContact) {
if(grecaptcha.getResponse(recaptchaWdContact)==''){
fnError($jq('#contact_recaptcha'), l('incorrect_captcha'));
is=true;
}
}
return is;
}
var send =function(){
if(ajax_login_status){
var data={comment:trim($msg.val())};
} else {
var data={comment:trim($msg.val()),
email:trim($email.val()),
username:trim($name.val())
}
}
$.post(url_main+'contact.php?cmd=send&ajax=1',data,function(res){
if(!ajax_login_status){
if(isRecaptchaContact){
grecaptcha.reset(recaptchaWdContact);
}else{
refreshCaptcha();
}
}
var data=getDataAjax(res, 'data');
if(data!==false){
fnSuccess()
}else{
alertServerError()
}
$controls.val('').prop('disabled',false);
$btnSubmit.prop('disabled',false).removeChildrenLoader();
})
}
var prepareMsg = function(){
$controls.prop('disabled',true);
$btnSubmit.prop('disabled',true).addChildrenLoader();
if(!ajax_login_status){
if(!isRecaptchaContact){
captchaContact=trim($captcha.val());
}
$.post(url_main+'contact.php?cmd=check_captcha&ajax=1',{captcha:captchaContact},function(res){
var data=getDataAjax(res, 'data');
if(data===false){
$controls.prop('disabled',false);
$btnSubmit.prop('disabled',false).removeChildrenLoader();
if(isRecaptchaContact){
grecaptcha.reset(recaptchaWdContact);
fnError($jq('#contact_recaptcha'), l('incorrect_captcha'));
}else{
refreshCaptcha();
fnError($captcha.val(''), l('incorrect_captcha'));
}
}else{
send()
}
})
}else{
send()
}
}
var isSubmit=false;
var $btnSubmit=$('.contact_submit', $blForm).click(function(){
isSubmit=true;
if(fnCheckData())return;
prepareMsg()
})
return false;
}
/* Contact us */
function initClickOnLogoMainPage(url){
url=url||urlPagesSite.index;
$('.logo_main_page, .logo').each(function(){
var $el=$(this).click(function(){
if(currentPage!='index.php')redirectUrl(url);
return false;
});
if(currentPage=='index.php')$el.css({cursor:'default'})
})
}
function redirectUrlWithLoader($el, url){
url=url||'';
$el.addChildrenLoader();
if($el[0].href){
url=$el[0].href;
}
redirectUrl(url);
}
function logOut(){
confirmCustom(l('do_you_want_to_log_out'), function(){
redirectUrl(url_main+'index.php?cmd=logout');
})
}
function updateSiteSeo(seo){
var title=document.title;
if (title!=seo.title) {
document.title=seo.title;
siteTitle=seo.title;
siteTitleTemp=seo.title;
}
var $description=$('meta[name=description]'), description=$description.attr('content');
if(description!=seo.description){
$description.attr('content', seo.description);
}
var $keywords=$('meta[name=keywords]'), keywords=$keywords.attr('content');
if(keywords!=seo.keywords){
$keywords.attr('content', seo.keywords);
}
}
function getOffsetElement(elem){
if(elem.getBoundingClientRect){
return getOffsetElementRect(elem)
}else{
return getOffsetElementSum(elem)
}
}
function getOffsetElementSum(elem) {
var top=0, left=0
while(elem) {
top=top+parseInt(elem.offsetTop)
left=left+parseInt(elem.offsetLeft)
elem=elem.offsetParent
}
return {top:top,left:left}
}
function getOffsetElementRect(elem) {
var box = elem.getBoundingClientRect();
var body = document.body;
var docElem = document.documentElement;
var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;
var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;
var clientTop = docElem.clientTop || body.clientTop || 0;
var clientLeft = docElem.clientLeft || body.clientLeft || 0;;
var top = box.top + scrollTop - clientTop;
var left = box.left + scrollLeft - clientLeft;
return {top:Math.round(top),left:Math.round(left)};
}
function getMouseOffset(e) {
var top=(e.clientY || e.pageY || e.originalEvent.touches[0].clientY) + $win.scrollTop(),
left=(e.clientX || e.pageX || e.originalEvent.touches[0].clientX) + $win.scrollLeft();
return {top:top,left:left};
}
function prepareStatusWritingIm(){
var time=parseInt(new Date()/1000);
for (var uid in status_writing) {
if((time-status_writing[uid]) > timeoutSecServer){
delete status_writing[uid];
}
}
//console.log('STATUS WRITING',status_writing);
}
function prepareStatusWritingImOne(){
var time=parseInt(new Date()/1000);
if((time-status_writing) > timeoutSecServer){
status_writing='';
}
}
function grabsTextLink(text){
var linksImg;
var grabImg = function(text){
//var pattern = /^https?:\/\/(?:[a-z\-]+\.)+[a-z]{2,6}(?:\/[^\/#?]+)+\.(?:jpe?g|gif|png)$/igm;
var pattern = /https?:\/\/(?:[a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))/igm;
linksImg = text.match(pattern);
//console.log(links);
for (var key in linksImg){
//console.log(linksImg[key]);
text=text.replace(linksImg[key], '{img:'+key+'}')
}
return text;
}
var replaceLinksWithTag=function(text) {
var pattern = /((https?:\/\/|ftp:\/\/|www\.)((?![.,?!;:()]*(\s|$))[^\s]){2,})/gim;
text = text.replace(pattern, '<a href="$1" target="_blank">$1</a>');
return text;
}
text = grabImg(text);
text = replaceLinksWithTag(text);
var replaceImg = function(text){
//var pattern = /https?:\/\/(?:[a-z\-_0-9\/\:\.]*\.(jpg|jpeg|png|gif))/igm;
//linksImg = text.match(pattern);
//console.log(links);
for (var key in linksImg){
text=text.replace('{img:'+key+'}', '<img src="'+linksImg[key]+'">')
}
return text;
}
text = replaceImg(text);
return text;
}
/* GPS */
var geoPoint={lat:0,long:0},
geoPointData={city:'',country:''}
watchPositionTimeoutSec=60000,
watchPositionTimeout=0;
function getGeoPosition() {
if (!navigator.geolocation){
return;
}
function success(pos) {
geoPoint.lat=pos.coords.latitude;
geoPoint.long=pos.coords.longitude;
console.log('%cGEO POINT GET:','background: #f7f68f', geoPoint);
};
function error() {
clearTimeout(watchPositionTimeout);
console.log('%cGEO GPS NOT AVIABLE:','background: #ff0000');
};
navigator.geolocation.getCurrentPosition(success, error);
}
function setWatchPositionTimeOut(time){
watchPositionTimeoutSec=time*1000;
}
function watchPosition(){
console.log('%cGEO POINT INIT:','background: #00ac20',watchPositionTimeoutSec);
watchPositionTimeout&&clearTimeout(watchPositionTimeout);
watchPositionTimeout=setTimeout('watchPosition()', watchPositionTimeoutSec);
getGeoPosition();
}
function setGeoPointData(data){
geoPointData = data;
}
/* GPS */
function showAdmobBanner(adMobBannerConfig) {
var config = adMobBannerConfig;
if(typeof isAdmobBannerVisible !== "undefined" && isAdmobBannerVisible === false) {
config = false;
}
if(typeof AdMob !== "undefined") {
if(config !== false) {
AdMob.banner.config(config);
AdMob.banner.prepare();
AdMob.banner.show();
} else {
AdMob.banner.remove();
}
}
}
function appPermissionsActivator(permissions, callbackSuccess, callbackError) {
if(getAndroidVersion() < 6) {
callbackSuccess();
return;
}
var permissionsPlugin = cordova.plugins.permissions;
var permissionsList = [];
for (i in permissions) {
permissionsList.push(permissionsPlugin[permissions[i]]);
}
permissionsPlugin.hasPermission(permissionsList, function(status){
if( !status.hasPermission ) {
permissionsPlugin.requestPermissions(
permissionsList,
function(status) {
if( !status.hasPermission ) {
callbackError()
} else {
callbackSuccess();
};
},
callbackError);
} else {
callbackSuccess();
}
}, null);
}
function initMediaChatMobileVersion() {
$(function(){
if(isMobileApp()) {
//console.log('addEventListener initMediaChatMobileVersion');
document.addEventListener('deviceready', appMediaChatCheckPermissions, false);
} else {
initMediaChat();
}
});
}
function appMediaChatCheckPermissions() {
if(typeMediaChatData === 'video') {
appVideochatCheckPermissions();
} else {
appAudiochatCheckPermissions();
}
}
function appVideochatCheckPermissions() {
var androidPermissions = ['CAMERA', 'RECORD_AUDIO'];
appPermissionsActivator(androidPermissions, initMediaChat, appVideochatCheckPermissionsError);
}
function appAudiochatCheckPermissions() {
var androidPermissions = ['RECORD_AUDIO'];
appPermissionsActivator(androidPermissions, initMediaChat, appAudiochatCheckPermissionsError);
}
function appVideochatCheckPermissionsError() {
appCheckPermissionsShowAlert('app_does_not_have_permissions_to_access_the_camera_and_the_microphone');
}
function appAudiochatCheckPermissionsError() {
appCheckPermissionsShowAlert('app_does_not_have_permission_to_access_the_microphone');
}
function appCheckPermissionsShowAlert(message)
{
if(typeof urbanMobileTemplate != 'undefined') {
showAlert(l(message));
} else {
showAlert(l(message), false, 'fa-info-circle');
}
}
function isMobileApp() {
return !!window.cordova;
}
function getAndroidVersion(type) {
var version = device.version;
var type = type || 'main';
if(type === 'main') {
var versionParts = version.split('.');
version = versionParts[0];
}
return version;
}