// ALL THE GLOBAL FUNCTION function atou(b64) { return decodeURIComponent(escape(atob(b64))); } function utoa(b64) { return btoa(unescape(encodeURIComponent(b64))); } function getCaretPosition(editableDiv) { var caretPos = 0, sel, range; if (window.getSelection) { sel = window.getSelection(); if (sel.rangeCount) { range = sel.getRangeAt(0); if (range.commonAncestorContainer.parentNode == editableDiv) { caretPos = range.endOffset; } } } else if (document.selection && document.selection.createRange) { range = document.selection.createRange(); if (range.parentElement() == editableDiv) { var tempEl = document.createElement("span"); editableDiv.insertBefore(tempEl, editableDiv.firstChild); var tempRange = range.duplicate(); tempRange.moveToElementText(tempEl); tempRange.setEndPoint("EndToEnd", range); caretPos = tempRange.text.length; } } return caretPos; } function setCaretToPos(input, pos) { var range = document.createRange(), sel = window.getSelection() range.setStart(input.childNodes[0], pos); range.collapse(true); sel.removeAllRanges(); sel.addRange(range); } function set_cookie(name, value, expire) { var _date = new Date(); _date.setTime(_date.getTime() + (expire*24*60*60*1000)); _exp = "expires="+_date.toUTCString(); document.cookie = name+'='+value+';'+_exp+';path=/'; } function get_cookie(name) { var _name = name+'='; var _deCookie = decodeURIComponent(document.cookie); var ca = _deCookie.split(';'); for (var i = 0; i 0) { common_loading_overlay_count++; } if (common_loading_overlay_count == 0) { if (typeof templates == 'undefined') { $('body').append('
'); } else { $('body').append(templates); } } } function close_common_loading_overlay(id = '#submit_prevent') { if (common_loading_overlay_count <= 1) { $('body').find(id).remove(); common_loading_overlay_count = 0; } if (common_loading_overlay_count > 1) { common_loading_overlay_count--; } } // // FORM VALIDATION // function global_validate(form,lang_id) { var message_items = []; var flag = true; if(!lang_id) { var lang_id = 1; } // CHECK REQUIRE FIELD form.find('.form_field[validation~=require]').each(function() { var _form_field = $(this); // CHECK IF VALIDATION NOT ON DETAIL MULTIROW if($.trim(_form_field.find('input[name],select[name],textarea[name]').val()) == '' && _form_field.find('input[name],select[name],textarea[name]').is(':not(:disabled)')) { var title = find_element_title(_form_field); var msg_text = (title != '') ? element_manditory_field_with_title.replace('#title#', title) : element_manditory_fields; message_items.push(msg_text); flag = false; } }); form.find('.form_field.related[validation~=require]').each(function() { var _form_field = $(this); // CHECK IF VALIDATION NOT ON DETAIL MULTIROW if($.trim(_form_field.find('input[type=hidden]').val()) == '' && _form_field.find('input').is(':not(:disabled)')) { var title = find_element_title(_form_field); var msg_text = (title != '') ? element_related_field_with_title.replace('#title#', title) : element_manditory_fields; message_items.push(msg_text); flag = false; } }); // CHECK EMAIL FILED form.find('.form_field[validation~=email]').each(function() { var _form_field = $(this); var _input = _form_field.find('[type=text][name]'); if($.trim(_input.val()) != '' && !validate_email_format(_input.val()) && _input.is(':not(:disabled)')) { var title = find_element_title(_form_field); var msg_text = element_invalid_email_format.replace('#title#',title); message_items.push(msg_text); flag = false; } }); // CHECK WEBSITE FILED form.find('.form_field[validation~=website]').each(function() { var _form_field = $(this); var _input = _form_field.find('[type=text][name]'); if($.trim(_input.val()) != '' && !validate_website_format(_input.val()) && _input.is(':not(:disabled)')) { var title = find_element_title(_form_field); var msg_text = element_invalid_website_format.replace('#title#',title); message_items.push(msg_text); flag = false; } }); // CHECK MOBILE FILED form.find('.form_field[validation~=mobile]').each(function() { var _form_field = $(this); var _input = _form_field.find('[type=text][name]'); if($.trim(_input.val()) != '' && !validate_mobile(_input.val()) && _input.is(':not(:disabled)')) { var title = find_element_title(_form_field); var msg_text = element_invalid_mobile_number.replace('#title#',title); message_items.push(msg_text); flag = false; } }); // CHECK SHEBA CODE FILED form.find('.form_field[validation~=sheba]').each(function() { var _form_field = $(this); var _input = _form_field.find('[type=text][name]'); if($.trim(_input.val()) != '' && !validate_sheba_code(_input.val()) && _input.is(':not(:disabled)')) { var title = find_element_title(_form_field); var msg_text = element_invalid_sheba_number.replace('#title#',title); message_items.push(msg_text); flag = false; } }); // CHECK ONLY LATIN ALPHABET FILED form.find('.form_field[validation~=latin_alpha]').each(function() { var _form_field = $(this); var _input = _form_field.find('[type=text][name]'); if($.trim(_input.val()) != '' && !_input.val().match(/^[a-zA-Z0-9_.\s]+$/) && _input.is(':not(:disabled)')) { var title = find_element_title(_form_field); var msg_text = element_only_alphabet.replace('#title#',title); message_items.push(msg_text); flag = false; } }); // CHECK NATIONAL CODE FILED form.find('.form_field[validation~=national_code]').each(function() { var _form_field = $(this); var _input = _form_field.find('[type=text][name]'); if($.trim(_input.val()) != '' && !validate_national_code(_input.val()) && (_form_field.attr('valid') == undefined || _form_field.attr('valid') == true) && _input.is(':not(:disabled)')) { var title = find_element_title(_form_field) var msg_text = element_invalid_national_code.replace('#title#',title); message_items.push(msg_text); flag = false; } }); // CHECK POSTAL CODE form.find('.form_field[validation~=national_postal_code]').each(function() { var _form_field = $(this); var _input = _form_field.find('[type=text][name]'); if($.trim(_input.val()) != '' && !validate_postal_code(_input.val()) && _input.is(':not(:disabled)')) { var title = find_element_title(_form_field) var msg_text = element_invalid_postal_code.replace('#title#',title); message_items.push(msg_text); flag = false; } }); // MIN VALUE - MAX VALUE FIELD form.find('[minvalue]').each(function() { var _input = $(this); var title = find_element_title(_input.parents('.form_field')) if($.trim(_input.val()) != '' && _input.val() < parseInt(_input.attr('minvalue'))) { var msg_text = element_min_value_reached.replace('#title#',title).replace('#minvalue#',_input.attr('minvalue')); message_items.push(msg_text); flag = false; } }) form.find('[maxvalue]').each(function() { var _input = $(this); var title = find_element_title(_input.parents('.form_field')) if($.trim(_input.val()) != '' && _input.val() > parseInt(_input.attr('maxvalue'))) { var msg_text = element_max_value_reached.replace('#title#',title).replace('#maxvalue#',_input.attr('maxvalue')); message_items.push(msg_text); flag = false; } }) // CHECK VALIDATE FIELD form.find('.form_field[valid=false]:visible').each(function() { var _form_field = $(this); var title = find_element_title(_form_field) var msg_text = element_invaliad_value.replace('#title#',title); message_items.push(msg_text); flag = false; }); form.find('.form_field[valid=true]:visible').each(function() { var _form_field = $(this); if(_form_field.find('input[prop~=autocompete]').length > 0 && _form_field.find('input[type=hidden]').length != 0 && _form_field.find('input[type=hidden]').val() == '') { var title = find_element_title(_form_field) var msg_text = element_invaliad_value.replace('#title#',title); message_items.push(msg_text); flag = false; } }); // CHECK VALIDATION ON RADIO AND CHECKBOX GROUP form.find('.form_field[validation~=require] .group').each(function() { var checked = true; var _parent = $(this).parent(); var _min = (_parent.attr('min') != undefined) ? _parent.attr('min') : 1; if($(this).find('input[name]:checked').length > 0 && $(this).find('input[name]:checked').length < parseInt(_min)) checked = false if (!checked) { var msg_text = element_invaliad_select_min_checkbox.replace('#min#', _min).replace('#title#', _parent.find('span.label').text()); message_items.push(msg_text); flag = false; } }); form.find('.form_field[validation~=is_require] .group').each(function() { var checked = true; var _parent = $(this).parent(); // var _min = (_parent.attr('min') != undefined) ? _parent.attr('min') : 1; if($(this).find('input[name]:checked').length == 0) checked = false if (!checked) { var msg_text = element_one_option_require.replace('#title#',find_element_title(_parent)); message_items.push(msg_text); flag = false; } }); // CHECK VALIDATION ON MINRECORD FOR DETAIL form.find('.detail_holder:visible table[minrecord]:not([disabled])').each(function() { var _table = $(this); var _min = _table.attr('minrecord'); var _title = ''; if (_table.attr('title') != undefined) { _title = _table.attr('title'); } else if (_table.parent().prev().find('.seperator').length > 0) { _title = _table.parent().prev().find('.seperator').text(); } if (_table.find('tbody:not(.tmp)').length < _min) { var msg_text = element_one_row_of_table_require.replace('#min#',_min).replace('#title#',_title); message_items.push(msg_text); flag = false; } }) // CHECK MAX SELECTED ITEM ON MULTIPLE SELECT COMPLETE form.find('select[multiple][max_select]').each(function() { var _form_field = $(this).parents('.form_field'); if ($(this).find('option:selected').length > $(this).attr('max_select')) { var title = find_element_title(_form_field); var msg_text = element_max_selected_riched.replace('#max_select#',$(this).attr('max_select')).replace('#title#',title); // var msg_text = 'حداکثر تعداد مجاز برای انتخاب در '+title+', '+farsidigit($(this).attr('max_select'))+' عنوان می باشد!' message_items.push(msg_text); flag = false; } }) if (window._token) { if (form.find('[name=_token]').length <= 0) form.append(''); else form.find('[name=_token]').val(window._token) } if (!flag) { $.each(message_items, function(i,v) { if (i < 6) global_message({type:'error', message:v}); else return false; }) return false; } else { return true; } } // // FARSI DIGIT NUMBER // var farsidigit= function(digit, lang) { var digitlang = (lang == undefined) ? 1 : lang; if (digitlang == 1) return digit.toString().replace(/\d+/g, function(number) { var ret = ''; for (var i = 0, len = number.length; i < len; i++) { ret += String.fromCharCode(number.charCodeAt(i) + 1728); } return ret; }); else return digit; } // // To Digit Number // var todigits= function(val) { while (/(\d+)(\d{3})/.test(val.toString())){ val = val.toString().replace(/(\d+)(\d{3})/, '$1'+','+'$2'); } return val; } // // SEND REQUEST // var common_request= function(params, req_type) { var option = { url : '', method : 'POST', async : true, data : {}, beforeSend: function() {}, success: function(data) {}, error: function(XMLHttpRequest, textStatus, errorThrown) {}, complete: function () {} } var o = $.extend(true, option, params); if (window._token){ o.data['_token'] = window._token; } if (req_type == undefined || req_type == 'request') $data = 'request='+ JSON.stringify(o.data); else if (req_type == 'rest') $data = o.data; ajax_req = $.ajax({ url:o.url, data:$data, type:o.method, global:false, async:o.async, beforeSend: o.beforeSend, success: o.success, error: o.error, complete: o.complete }); ajax_req.done(function(data) { if (typeof data != "string") { var _done_data = $.parseJSON(data); } else { var _done_data = data; } if (typeof _done_data['_token'] != 'undefined') { window._token = _done_data['_token']; } }); return ajax_req; } // // VALIDATION EMAIL FORMAT // var validate_email_format= function(email) { var re = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i; return re.test(email) } // // VALIDATION WEBSITE FORMAT // var validate_website_format= function(website) { // var re = /[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[1-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi; // var re = /(https?:\/\/(?:www\.|(?!www))[^\.s\.]+\.[^\s]{2,}|www\.[^\s]+\.[^\s]{2,})$/gi; var re = /^(http(s)?:\/\/)?(www\.)?[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/gi; return re.test(website) } // // VALIDATION PASSWORD STRENGTH // var validate_password_strength= function(txtpass) { var score = 0; //if txtpass bigger than 6 give 1 point if (txtpass.length > 6) score++; //if txtpass has both lower and uppercase characters give 1 point if ( ( txtpass.match(/[a-z]/) ) && ( txtpass.match(/[A-Z]/) ) ) score++; //if txtpass has at least one number give 1 point if (txtpass.match(/\d+/)) score++; //if txtpass has at least one special caracther give 1 point if ( txtpass.match(/(.*[!,@,#,$,%,^,&,*,?,_,~])/) ) score++; //if txtpass bigger than 12 give another 1 point if (txtpass.length > 12) score++; return score; } // // VALIDATION NATIONAL CODE FORM // var validate_national_code= function(code) { if (code.length == 10) { if (code == '1111111111' || code == '0000000000' || code == '2222222222' || code == '3333333333' || code == '4444444444' || code == '5555555555' || code == '6666666666' || code == '7777777777' || code == '8888888888' || code == '9999999999' || code == '0123456789' || code == '9876543210') { return false; } c = parseInt(code.charAt(9)); n = parseInt(code.charAt(0)) * 10 + parseInt(code.charAt(1)) * 9 + parseInt(code.charAt(2)) * 8 + parseInt(code.charAt(3)) * 7 + parseInt(code.charAt(4)) * 6 + parseInt(code.charAt(5)) * 5 + parseInt(code.charAt(6)) * 4 + parseInt(code.charAt(7)) * 3 + parseInt(code.charAt(8)) * 2; r = n - parseInt(n / 11) * 11; if ((r == 0 && r == c) || (r == 1 && c == 1) || (r > 1 && c == 11 - r)) { return true; } else{ return false; } } else { return false; } } // // VALIDATION MOBILE FORM // var validate_mobile= function(number) { if (number.length == 11 && number.substr(0, 2) == "09") return true; else return false; } // // VALIDATION SHEBA FORM // var validate_sheba_code= function(number) { if (number.length == 26 && number.substr(0, 2) == "IR") return true; else return false; } // // VALIDATION POSTALCODE FORM // var validate_postal_code= function(number) { if (number.length == 10) return true; else return false; } // // VALIDATE USERNAME // var validate_username= function(event, field) { var valid_regular_char = /[A-Za-z0-9_.]/g; var valid_char = [8,37,38,9,16]; var key = String.fromCharCode(event.keyCode || event.charCode); if ($.inArray(event.keyCode, valid_char) != -1 || valid_regular_char.test(key)) { return true; } else { var msg = (element_invaliad_username_format); global_message({type : 'error', message:msg}); return false; } } // // CHECK ELEMENT HAS ATTR // $.fn.hasAttr= function(name) { return typeof this.attr(name) !== typeof undefined && this.attr(name) !== false } // // FIND ELEMENT TITLE FOR SHOW IN MESSAGES OR ... (TITLE OF ELEMENT IS DIFFERENT BASED ON FIELD SITUATION) // var find_element_title = function (_form_field) { var title = '', _table_title = ''; if (_form_field.parents('tr.row_field').length > 0) { var _table = _form_field.parents('table.detail'); if (_table.attr('title') != undefined) { _table_title = _table.attr('title'); } else if (_table.parent().prev().find('.seperator').length > 0) { _table_title = _table.parent().prev().find('.seperator').text(); } console.log(_form_field) if (_form_field.attr('title') != undefined) { title = _form_field.attr('title') + element_find_element_title_from_table + _table_title; } else { title = _form_field.parents('td:first').attr('col_label') + element_find_element_title_from_table + _table_title; } } else { if ($.trim(_form_field.find('span.title').text()) != '' && _form_field.find('span.title').text() != undefined) title = _form_field.find('span.title').text() else if ($.trim(_form_field.find('span.label').text()) != '' && _form_field.find('span.label').text() != undefined) title = _form_field.find('span.label').text(); else title = _form_field.attr('hidden_title') } return ''+title+''; } // // IMAGE GENERATOR // var image = function(params) { var _image = "", _is_lazyload = false, _image_alt = false; if (params.parent != false) { _image += "