/******************************************************************************* * Title: Help Desk Software HESK * Version: 2.6.5 from 28th August 2015 * Author: Klemen Stirn * Website: http://www.hesk.com ******************************************************************************** * COPYRIGHT AND TRADEMARK NOTICE * Copyright 2005-2015 Klemen Stirn. All Rights Reserved. * HESK is a registered trademark of Klemen Stirn. * The HESK may be used and modified free of charge by anyone * AS LONG AS COPYRIGHT NOTICES AND ALL THE COMMENTS REMAIN INTACT. * By using this code you agree to indemnify Klemen Stirn from any * liability that might arise from it's use. * Selling the code for this program, in part or full, without prior * written consent is expressly forbidden. * Using this code, in part or full, to create derivate work, * new scripts or products is expressly forbidden. Obtain permission * before redistributing this software over the Internet or in * any other medium. In all cases copyright and header must remain intact. * This Copyright is in full effect in any country that has International * Trade Agreements with the United States of America or * with the European Union. * Removing any of the copyright notices without purchasing a license * is expressly forbidden. To remove HESK copyright notice you must purchase * a license for this script. For more information on how to obtain * a license please visit the page below: * https://www.hesk.com/buy.php *******************************************************************************/ function hesk_insertTag(tag) { var text_to_insert = '%%' + tag + '%%'; hesk_insertAtCursor(document.form1.msg, text_to_insert); document.form1.message.focus(); } function hesk_insertAtCursor(myField, myValue) { if (document.selection) { myField.focus(); sel = document.selection.createRange(); sel.text = myValue; } else if (myField.selectionStart || myField.selectionStart == '0') { var startPos = myField.selectionStart; var endPos = myField.selectionEnd; myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length); } else { myField.value += myValue; } } function hesk_changeAll(myID) { var d = document.form1; var setTo = myID.checked ? true : false; for (var i = 0; i < d.elements.length; i++) { if (d.elements[i].type == 'checkbox' && d.elements[i].name != 'checkall') { d.elements[i].checked = setTo; } } } function hesk_attach_disable(ids) { for ($i = 0; $i < ids.length; $i++) { if (ids[$i] == 'c11' || ids[$i] == 'c21' || ids[$i] == 'c31' || ids[$i] == 'c41' || ids[$i] == 'c51') { document.getElementById(ids[$i]).checked = false; } document.getElementById(ids[$i]).disabled = true; } } function hesk_attach_enable(ids) { for ($i = 0; $i < ids.length; $i++) { document.getElementById(ids[$i]).disabled = false; } } function hesk_attach_toggle(control, ids) { if (document.getElementById(control).checked) { hesk_attach_enable(ids); } else { hesk_attach_disable(ids); } } function hesk_window(PAGE, HGT, WDT) { var HeskWin = window.open(PAGE, "Hesk_window", "height=" + HGT + ",width=" + WDT + ",menubar=0,location=0,toolbar=0,status=0,resizable=1,scrollbars=1"); HeskWin.focus(); } function hesk_toggleLayerDisplay(nr) { if (document.all) document.all[nr].style.display = (document.all[nr].style.display == 'none') ? 'block' : 'none'; else if (document.getElementById) document.getElementById(nr).style.display = (document.getElementById(nr).style.display == 'none') ? 'block' : 'none'; } function hesk_confirmExecute(myText) { if (confirm(myText)) { return true; } return false; } function hesk_deleteIfSelected(myField, myText) { if (document.getElementById(myField).checked) { return hesk_confirmExecute(myText); } } function hesk_rate(url, element_id) { if (url.length == 0) { return false; } var element = document.getElementById(element_id); xmlHttp = GetXmlHttpObject(); if (xmlHttp == null) { alert("Your browser does not support AJAX!"); return; } xmlHttp.open("GET", url, true); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { element.innerHTML = xmlHttp.responseText; } } xmlHttp.send(null); } function stateChanged() { if (xmlHttp.readyState == 4) { document.getElementById("rating").innerHTML = xmlHttp.responseText; } } function GetXmlHttpObject() { var xmlHttp = null; try { // Firefox, Opera 8.0+, Safari xmlHttp = new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } } return xmlHttp; } var heskKBquery = ''; var heskKBfailed = false; function hesk_suggestKB() { var d = document.form1; var s = d.subject.value; var m = d.message.value; var element = document.getElementById('kb_suggestions'); if (s != '' && m != '' && (heskKBquery != s + " " + m || heskKBfailed == true)) { element.style.display = 'block'; var params = "p=1&" + "q=" + encodeURIComponent(s + " " + m); heskKBquery = s + " " + m; xmlHttp = GetXmlHttpObject(); if (xmlHttp == null) { return; } xmlHttp.open('POST', 'suggest_articles.php', true); xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { element.innerHTML = xmlHttp.responseText; heskKBfailed = false; } else { heskKBfailed = true; } } xmlHttp.send(params); } setTimeout('hesk_suggestKB();', 2000); } function hesk_suggestKBsearch(isAdmin) { var d = document.searchform; var s = d.search.value; var element = document.getElementById('kb_suggestions'); if (isAdmin) { var path = 'admin_suggest_articles.php'; } else { var path = 'suggest_articles.php'; } if (s != '' && (heskKBquery != s || heskKBfailed == true)) { element.style.display = 'block'; var params = "q=" + encodeURIComponent(s); heskKBquery = s; xmlHttp = GetXmlHttpObject(); if (xmlHttp == null) { return; } xmlHttp.open('POST', path, true); xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { element.innerHTML = unescape(xmlHttp.responseText); heskKBfailed = false; } else { heskKBfailed = true; } } xmlHttp.send(params); } setTimeout('hesk_suggestKBsearch(' + isAdmin + ');', 2000); } function hesk_suggestEmail(isAdmin) { var email = document.form1.email.value; var element = document.getElementById('email_suggestions'); if (isAdmin) { var path = '../suggest_email.php'; } else { var path = 'suggest_email.php'; } if (email != '') { var params = "e=" + encodeURIComponent(email); xmlHttp = GetXmlHttpObject(); if (xmlHttp == null) { return; } xmlHttp.open('POST', path, true); xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { element.innerHTML = unescape(xmlHttp.responseText); element.style.display = 'block'; } } xmlHttp.send(params); } } function hesk_btn(Elem, myClass) { Elem.className = myClass; } function hesk_checkPassword(password) { var numbers = "0123456789"; var lowercase = "abcdefghijklmnopqrstuvwxyz"; var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var punctuation = "!.@$#*()%~<>{}[]"; var combinations = 0; if (hesk_contains(password, numbers) > 0) { combinations += 10; } if (hesk_contains(password, lowercase) > 0) { combinations += 26; } if (hesk_contains(password, uppercase) > 0) { combinations += 26; } if (hesk_contains(password, punctuation) > 0) { combinations += punctuation.length; } var totalCombinations = Math.pow(combinations, password.length); var timeInSeconds = (totalCombinations / 200) / 2; var timeInDays = timeInSeconds / 86400 var lifetime = 365000; var percentage = timeInDays / lifetime; var friendlyPercentage = hesk_cap(Math.round(percentage * 100), 98); if (friendlyPercentage < (password.length * 5)) { friendlyPercentage += password.length * 5; } var friendlyPercentage = hesk_cap(friendlyPercentage, 98); var progressBar = document.getElementById("progressBar"); progressBar.style.width = friendlyPercentage + "%"; if (percentage > 1) { // strong password progressBar.classList.remove('progress-bar-danger'); progressBar.classList.remove('progress-bar-warning'); progressBar.classList.add('progress-bar-success'); return; } if (percentage > 0.5) { // reasonable password progressBar.classList.remove('progress-bar-danger'); progressBar.classList.remove('progress-bar-success'); progressBar.classList.add('progress-bar-warning'); return; } if (percentage > 0.10 || percentage <= 0.10) { // weak password progressBar.classList.remove('progress-bar-warning'); progressBar.classList.remove('progress-bar-success'); progressBar.classList.add('progress-bar-danger'); return; } } function hesk_cap(number, max) { if (number > max) { return max; } else { return number; } } function hesk_contains(password, validChars) { count = 0; for (i = 0; i < password.length; i++) { var char = password.charAt(i); if (validChars.indexOf(char) > -1) { count++; } } return count; } function setCookie(name, value, expires, path, domain, secure) { document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); } function getCookie(name) { var dc = document.cookie; var prefix = name + "="; var begin = dc.indexOf("; " + prefix); if (begin == -1) { begin = dc.indexOf(prefix); if (begin != 0) return null; } else { begin += 2; } var end = document.cookie.indexOf(";", begin); if (end == -1) { end = dc.length; } return unescape(dc.substring(begin + prefix.length, end)); } function deleteCookie(name, path, domain) { if (getCookie(name)) { document.cookie = name + "=" + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-70 00:00:01 GMT"; } }