/** * Common JavaScript library. * * @package TenisPortal * @subpackage JavaScript * @author Livesport, s.r.o. * @copyright (c) 2007 Livesport, s.r.o.; {@link http://www.livesport.cz/} * @since 2007/09/22 */ var ajaxObject = new Array(); var cJsLib = new cJsLib(); var ie = false; var cookie = new Cookie(); var eMsg = new ExpressMessage(); var toolTip = null; var closingPermInfo = false; //addLoadEvent(searchInit); addLoadEvent(setHoverButtons); addLoadEvent(setTabIndexes); addLoadEvent(checkLastMatchSize); addLoadEvent(setToolTip); /** * Set HOVER efekt on backgrounded inputs. */ function setHoverButtons() { var obj = cJsLib.$$('input.btn'); if (! cJsLib.isNull(obj) && obj.length > 0) { for (var i = 0; i < obj.length; ++i) { obj[i].onmouseover = function() { var pElem = this.parentNode; var pCss = cJsLib.getCls(pElem); var pattBtn = new RegExp('(lGray|lOrange|lGreen)', 'g'); if (! cJsLib.empty(pCss) && pattBtn.test(pCss)) { cJsLib.addCls(this, 'hover'); } }; obj[i].onmouseout = function() { var pElem = this.parentNode; var pCss = cJsLib.getCls(pElem); var pattBtn = new RegExp('(lGray|lOrange|lGreen)', 'g'); if (! cJsLib.empty(pCss) && pattBtn.test(pCss)) { cJsLib.rmCls(this, 'hover'); } }; } } }; /** * Set tabindex attribute on selected elements. */ function setTabIndexes() { if (! cJsLib.isNull(tabIdx) && tabIdx.length > 0) { for (var i = 0; i < tabIdx.length; ++i) { cJsLib.$(tabIdx[i]).setAttribute('tabIndex', i+1); } } }; /** * Check size table with last matches on home page and resize if needed. */ function checkLastMatchSize() { var tbl = cJsLib.$(cookie.get('idx_last_game_tab') + '-data'); if (! cJsLib.isNull(tbl)) { if (tbl.offsetHeight < 219) { var lstContainer = cJsLib.$('lastMatch'); var cls = null; if (! cJsLib.isNull(lstContainer)) { cJsLib.setStyle(lstContainer, 'height:' + tbl.offsetHeight + 'px;overflow-y:hidden;'); } } if (cJsLib.isIE()) { cJsLib.setStyle(cJsLib.$('lstGame-' + cookie.get('idx_last_game_tab').replace('lstGame-', '') + '-data'), '#width:471px;_width:477px;'); } } }; function setToolTip() { toolTip = new tooltip('web-all'); }; /** * Append a new onload function. * * @param {String} func The name of function. */ function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { if (oldonload) { oldonload(); } func(); } } }; /** * Detect M$ IE browser. * * @return void */ function detect_browser() { if (navigator.userAgent.match(/MSIE/)) ie = true; }; detect_browser(); /** * Remove the CSS class. * * @param object * element The DOM element of target element. */ function delCls(element) { if (ie) //element.removeAttribute('className'); element.className = ''; else element.removeAttribute('class'); }; /** * Set the CSS class name. * * @param object * $element Target element object. * @param string * $clsName Name of the CSS class. * @return void */ function setCls(element, clsName) { //return (ie ? element.setAttribute('className', clsName) : element.setAttribute('class', clsName)); return (ie ? element.className = clsName : element.setAttribute('class', clsName)); }; /** * Get the CSS style. * * @param object * element Target element object. */ function getCls(element) { return (ie ? element.getAttribute('className') : element.getAttribute('class')); }; /** * Set the CSS style on parent element. * * @param object * $element DOM object of parent element. * @param string * $styleCSS The CSS style; */ function setStyle(element, styleCSS) { if (ie) element.style.cssText = styleCSS; else element.setAttribute('style', styleCSS); }; /** * Set the onclick function. * * @param object * $element DOM object of parent element. * @param string * $onAction Action for onclick event. * @return void */ function setOnClick(element, onAction) { if (ie) element.onclick = new Function("env", onAction); else element.setAttribute('onclick', onAction); }; /** * Get value of the node from XML DOM. * * @param string * $element The DOM object. * @return string */ function getNodeValue(element) { return (ie ? element.text : element.textContent); }; /** * Get object of element by ID. * * @param string * $element ID name of requested element. * @return object Returns element's object. */ function getElement(element) { return document.getElementById(element); }; /** * Get element position. * * @param {Object} obj DOM object of parent element. * @param {Object} Returns array with element position. */ function getElementPosition(obj) { var curleft = 0; var curtop = 0; if (obj.offsetParent) { curleft = obj.offsetLeft; curtop = obj.offsetTop; while (obj = obj.offsetParent) { curleft += obj.offsetLeft; curtop += obj.offsetTop; } } return {curleft:curleft, curtop:curtop}; }; var nodiac = { 'á':'a', 'Á':'a', 'č':'c', 'Č':'c', 'ď':'d', 'Ď':'d', 'é':'e', 'É':'e', 'ě':'e', 'Ě':'e', 'í':'i', 'Í':'i', 'ň':'n', 'Ň':'n', 'ó':'o', 'Ó':'o', 'ř':'r', 'Ř':'r', 'š':'s', 'Š':'s', 'ť':'t', 'Ť':'t', 'ú':'u', 'Ú':'u', 'ů':'u', 'Ů':'u', 'ý':'y', 'Ý':'y', 'ž':'z', 'Ž':'z', 'ü':'ue','Ü':'ue', 'ä':'a', 'Ä':'a', 'ë':'e', 'Ë':'e', 'ö':'o', 'Ö':'o', 'ï':'i', 'Ï':'i', 'ÿ':'y', 'Ÿ':'y', 'ł':'l', 'Ł':'l', 'ĺ':'l', 'Ĺ':'l', 'ć':'c', 'Ć':'c' }; /** * Make friendly URL. * * @param string * $str Source string to convert. * @return string Returns converted string. * @copyright Jakub Vrána, http://php.vrana.cz; Jiří Švec - LiveSport, * http://www.livesport.cz/ */ function make_url(str) { str = str.toLowerCase(); var s2 = ''; for (var i = 0; i < str.length; i++) s2 += (typeof nodiac[str.charAt(i)] != 'undefined' ? nodiac[str.charAt(i)] : str.charAt(i)); return s2.replace(/[^a-z0-9_]+/g, '-').replace(/^-|-$/g, ''); }; /** * URL encode / decode. * * http://www.webtoolkit.info/ */ var url = { // public method for url encoding encode : function(string) { return escape(this._utf8_encode(string)); }, // public method for url decoding decode : function(string) { return this._utf8_decode(unescape(string)); }, // private method for UTF-8 encoding _utf8_encode : function(string) { string = string.replace(/\r\n/g,"\n"); var utftext = ""; for (var n = 0; n < string.length; n++) { var c = string.charCodeAt(n); if (c < 128) utftext += String.fromCharCode(c); else if((c > 127) && (c < 2048)) { utftext += String.fromCharCode((c >> 6) | 192); utftext += String.fromCharCode((c & 63) | 128); } else { utftext += String.fromCharCode((c >> 12) | 224); utftext += String.fromCharCode(((c >> 6) & 63) | 128); utftext += String.fromCharCode((c & 63) | 128); } } return utftext; }, // private method for UTF-8 decoding _utf8_decode : function(utftext) { var string = ""; var i = 0; var c = c1 = c2 = 0; while (i < utftext.length) { c = utftext.charCodeAt(i); if (c < 128) { string += String.fromCharCode(c); i++; } else if((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i+1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; } else { c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; } } return string; } }; /** * Set the CSS class at mouseover event. * * @param object * $element Target element object. * @return void */ function m_over(element) { // last_cls = ie ? element.getAttribute('className') : // element.getAttribute('class'); setStyle(element, 'background: #f7f8dc'); }; /** * Set the CSS class in mouseout event. * * @param object * $element Target element object. * @return void */ function m_out(element) { setStyle(element, ''); }; /** * Set the CSS class in mouseover event on double row. * * @param object * $element Target element object. * @param boolean * $is_second Is second row. * @return void */ function md_over(element, is_second) { // save last CSS class // last_d_cls = ie ? element.getAttribute('className') : // element.getAttribute('class'); var one = element.getAttribute('id'); var two = one.match(/b/) ? one.slice(0,-1) : one+'b'; // setting hover setStyle(getElement(one), 'background: #f7f8dc'); setStyle(getElement(two), 'background: #f7f8dc'); }; /** * Set the CSS class in mouseout event on double row. * * @param object * $element Target element object. * @param boolean * $is_second Is second row. * @return void */ function md_out(element, is_second) { var one = element.getAttribute('id'); var two = one.match(/b/) ? one.slice(0, -1) : one+'b'; // setting hover setStyle(getElement(one), ''); setStyle(getElement(two), ''); }; function cTabMenu(prefix, id, maxId, showData, resizeOverflow, cookieName) { if (cJsLib.empty(id)) { id = new Number(1); } idx = cJsLib.$('last') == null ? false : true; resizeOverflow = ! cJsLib.isNull(resizeOverflow) && resizeOverflow ? true : false; showData = ! cJsLib.isNull(showData) && showData ? true : false; for (i = 1; i <= maxId; ++i) { cJsLib.rmCls(cJsLib.$(prefix + i)); if (showData) { cJsLib.setCls(cJsLib.$(prefix + i + '-data'), 'none'); } } cJsLib.setCls(cJsLib.$(prefix + id), 'set'); if (cJsLib.isObject(cJsLib.$(prefix + id + '-data'))) { if (showData) { cJsLib.sh(prefix + id + '-data'); } if (resizeOverflow) { var div = cJsLib.$('lastMatch'); var dataHeight = cJsLib.$(prefix + id + '-data').offsetHeight; var dHeight = dataHeight > 250 ? 250 : (dataHeight < 50 ? 20 : dataHeight); cJsLib.setStyle(div, 'height:' + dHeight.toString() + 'px;'); if (cJsLib.isIE()) { cJsLib.setStyle(cJsLib.$('lstGame-' + id + '-data'), '#width:471px;_width:477px;'); } if (dHeight == 20) { cJsLib.setCls(div, 'noScroll'); } else { cJsLib.rmCls(div); } } } // update cookie if (! cJsLib.empty(cookieName)) { cookie.add(cookieName, prefix + id, 365); } delete i,resizeOverflow,showData; }; /** * Show / hide tab menu. * * @param string * $tab ID of next tab menu. * @param boolean * $showData If need switch hidden data box enter true, * otherwise null or false. * @param string * $prefix Prefix for element ID. param boolean $show_data Show data * data block, for example paired DIV block witch some data which * depends on tab. Data block must a same ID as pared tab and * finishes '-data', e.g. lt1 for TAB and lt1-data * for the data block (optional). * @param boolean * $resize_overflow Resize overflow div (optional). * @return void */ function tmenu(prefix, id, max_id, show_data, resize_overflow) { var idx = (getElement('last') == null) ? false : true; if (typeof id == 'undefined') { id = 1; } if (typeof resize_overflow == 'undefined') { resize_overflow = false; } if (typeof show_data == 'undefined') { show_data = false; } for (var i = 1; i <= max_id; i++) { setCls(getElement(prefix+i), 'n'); if (idx) { setCls(getElement('tbl-last'+i), 'result'); } if (show_data) { setCls(getElement(prefix+i+'-data'), 'hidden'); } } setCls(getElement(prefix+id), 'a'); if (show_data) { setCls(getElement(prefix+id+'-data'), 'shown'); } if (idx && resize_overflow) { var div = getElement('last'); var dataHeight = getElement(prefix+id+'-data').offsetHeight; var dHeight = dataHeight > 250 ? 250 : (dataHeight < 50 ? 35 : dataHeight); setStyle(div, 'height:'+dHeight+'px;'); if (dHeight == 35) { setCls(div, 'no-scroll'); var tbl = getElement('tbl-last'+id); setCls(tbl, 'result no-data'); } else { delCls(div); } } }; /** * Check if added comment is not empty. * * @return boolean Returns true if comment is not empty, otherwise * returns false. */ function checkComment() { if (getElement('commContent').value == '') { alert(TXT_COMMENT_CAN_NOT_BE_EMPTY); return false; } return true; }; /** * Create new suggest box. * * @param string * $elementID ID of suggest box. * @return object Returns the DOM object of box. */ function _createSuggestBox(elementID) { // new suggest container var newSuggest = document.createElement('div'); newSuggest.setAttribute('id', 'mutualSuggest'); setCls(newSuggest, 'suggest'); return newSuggest; }; /** * Create suggest row. * * @param string * $rowValue Value of option in suggest. * @param string * $rowHref Link for option. * @param string * $onClickFunction Function which execute if click on element. * @return object Returns the DOM object. */ function _createSuggestRow(rowValue, rowHref, onClickFunction) { var opt = document.createElement('a'); setOnClick(opt, onClickFunction); opt.appendChild(document.createTextNode(rowValue)); opt.setAttribute('href', rowHref); return opt; }; /** * Move active row in suggest. * * @param object * $element DOM object of parent element. * @param string * $direction Direction of motion. Possible values are: * * @return void */ function moveActiveSuggestRow(element, direction) { var newPosition = lastSuggestRow; // check if suggest has some childs if (element.hasChildNodes()) { // remove hover delCls(element.childNodes[lastSuggestRow]); if (direction == 'down') { if (lastSuggestRow >= element.childNodes.length-1) newPosition = 0; else newPosition++; } else { if (lastSuggestRow <= 0) newPosition = element.childNodes.length-1; else newPosition--; } // set hover setCls(element.childNodes[newPosition], 'active'); // save last position lastSuggestRow = newPosition; } }; // AJAX {{{ var xhr; /** * Create XMLHttpRequest (XHR) object. * * @return void */ function create_xhr() { try { // Firefox, Opera 8.0+, Safari xhr = new XMLHttpRequest(); } catch (e) { // Internet Explorer try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { alert(TXT_UNSUPPORTED_BROWSER); return false; } } } }; /** * Display XHR error and error code, if creation failure. * * @return void */ function show_xhr_error() { alert(TXT_XHR_ERROR); }; var lastExpress; var actGetExpress = false; /** * Get a express message and show it. * * @param {Integer} id ID of express message. */ function getExpress(id) { if (! cJsLib.empty(lastExpress) && lastExpress == id) { hideExpress(id); } else if (! actGetExpress) { // delete pointer to auto hide opened express message if (cJsLib.isActiveTimeOut()) { cJsLib.destroyTimeOut(); } actGetExpress = true; var ajaxIndex = ajaxObject.length; ajaxObject[ajaxIndex] = new XHR(); var ajax = ajaxObject[ajaxIndex]; ajax.onCompletion = function(responseXML, response) { if (typeof lastExpress != "undefined" || lastExpress != null) { contElem = cJsLib.$('emsg-' + lastExpress); cJsLib.setCls(contElem, 'hidden'); cJsLib.setCls(cJsLib.$('p-emsg-' + lastExpress), 'express'); } mContainer = cJsLib.$('emsg-' + id); mContainer.innerHTML = response; lastExpress = id; cJsLib.rmCls(mContainer).setCls(cJsLib.$('p-emsg-' + id), 'express active'); cJsLib.$('p-emsg-' + id).onmouseover = function() { cJsLib.destroyTimeOut(); }; cJsLib.$('p-emsg-' + id).onmouseout = function() { cJsLib.registerTimeOutSh('p-emsg-' + id, 5, 'hide'); }; }; ajax.setMethod('GET').setVar('id', id).setRequestFile('/res/ajax/get-express-message.php'); ajax.runAjax(); actGetExpress = false; } }; /** * Hide content of a express message. * * @param {Integer} id Id of express message. */ function hideExpress(id) { cJsLib.setCls(cJsLib.$('emsg-' + id), 'hidden'); cJsLib.setCls(cJsLib.$('p-emsg-' + lastExpress), 'express'); cJsLib.$('p-emsg-' + lastExpress).onmouseout = function() {}; lastExpress = null; }; /* Forum functions {{{ */ function hide(element, useXhr) { var e = getElement(element); var ufMin = getElement('uf-min'); var hText = ufMin.firstChild; var stat = '0'; var cl; useXhr = (typeof useXhr == 'undefined' || useXhr !== true) ? false : true; if ((cl = e.getAttribute('class')) == undefined) { cl = e.getAttribute('className'); } if (cl == 'hide' || cl == 'hidden') { delCls(e); setCls(ufMin, 'up'); hText.innerHTML = TXT_MINIMIZE; ufMin.title = TXT_CLICK_TO_MINIMIZE_FILTER; stat = '1'; } else { setCls(e, 'hide'); setCls(ufMin, 'down'); hText.innerHTML = TXT_MAXIMIZE; ufMin.title = TXT_CLICK_TO_MAXIMIZE_FILTER; } if (useXhr) { create_xhr(); xhr.open('GET', TXT_URL_DISCUSSION + 'ajax/change-filter-stat.php?stat=' + stat); xhr.send(null); } }; /** * Show reload filter button. * * @return void */ var last_search; var last_only; /** * Check value filter by user only button and if value is changed, reload * filter. * * @return void */ function check_search() { var value = getElement('search-user').value; filter_check_length(getElement('search-user'), 64); if (value.length >= 3 && value != last_search) { if (getElement('filter').value == TXT_ACTIVATE) { getElement('filter').disabled = false; } else { enable_reload(); } } else if (value.length > 0) { getElement('filter_reload').disabled = true; } else { enable_reload(); } if (last_search == undefined) { last_search = getElement('search-user').value; } }; function filter_check_length(element, len) { if (element.value.length > len) { // @debug alert('Text is too long.'); return false; } else if (element.value.length > 0) { delCls(element); } return true; } /** * Active / deaktive user filter. * * @param integer * $status New filter status. * * @return void */ function u_filter(status) { var filter_div = getElement('u-filter'); var stat; var xml; var sel; if (status == '0') { filter_div.setAttribute('class', 'uf-deact'); filter_div.setAttribute('className', 'uf-deact'); getElement('filter').value = TXT_ACTIVATE; getElement('filter-status').innerHTML = TXT_ACTIVE; stat = '0'; } else { filter_div.setAttribute('class', 'uf-act'); filter_div.setAttribute('className', 'uf-act'); getElement('filter').value = TXT_DEACTIVATE; getElement('filter-status').innerHTML = TXT_DEACTIVE; stat = '1'; } xml = ''; xml += ''+stat+''; xml += '' : ('>'+getElement('search-user').value+'')) xml += '' : ('>'+getElement('user-only').value+'')); sel = getElement('sel-highlight').options; if (sel.length > 0) { xml += ''; for (var i = 0; i < sel.length; i++) { xml += ''+sel[i].text+''; } xml += ''; } else { xml += ''; } sel = getElement('sel-ignore').options; if (sel.length > 0) { xml += ''; for (var i = 0; i < sel.length; i++) { xml += ''+sel[i].text+''; } xml += ''; } else { xml += ''; } if ($('#commentForm').length) { isArticle = true; xml += '
'; } else { isArticle = false; } xml += ''; create_xhr(); xhr.onreadystatechange = function() { if (xhr.readyState == 0 || xhr.readyState == 4) { if (xhr.status == 200) { if (isArticle) { window.location.reload(true); } else { document.location = getElement('forum').action; } } else { show_xhr_error(); } } }; xhr.open('POST', TXT_URL_DISCUSSION + 'ajax/uf-enable.php'); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;"); xhr.send(xml); }; // }}} function host(ip, parentElement) { pElem = getElement('id'+parentElement); create_xhr(); xhr.onreadystatechange = function() { if (xhr.readyState == 0 || xhr.readyState == 4) { if (xhr.status == 200) { pElem.innerHTML = xhr.responseText; pElem.title = ''; pElem.style.cursor = 'auto'; } else { show_xhr_error(); } } }; xhr.open('GET', '/res/ajax/get-hostname.php?ip='+ip, true); xhr.send(null); }; /** * Enable filter button. * * @return void */ function enable_reload() { if (getElement('filter').value == TXT_DEACTIVATE) { getElement('filter_reload').disabled = false; } else { getElement('filter_reload').disabled = false; getElement('filter_reload').style.display = ''; } }; function reload() { u_filter('1'); }; function add_wrong() { if (getElement('new_wrong').value.length > 3) { create_xhr(); var url = 'word='+getElement('new_wrong').value; xhr.onreadystatechange = function() { if (xhr.readyState == 0 || xhr.readyState == 4) { if (xhr.status == 200) { getElement('add_result').innerHTML = xhr.responseText; getElement('new_wrong').value = ''; } else { show_xhr_error(); } } }; xhr.open('POST', TXT_URL_DISCUSSION + 'ajax/add-expletive.php'); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;"); xhr.send(url); } else { getElement('add_result').innerHTML = TXT_SHORT_WORD; } }; /** * Add user to highlighted user combo box. * * @param string * $user_id ID user. * @param string * $nick Nickname. * @return void */ function add_high(user_id, nick) { var opt = document.createElement('option'); if (check_in_combo('sel-highlight', nick) == true) { alert(TXT_USER_ALREADY_EXISTS_IN_SELECTION); return false; } if (check_in_combo('sel-ignore', nick) == true) { alert(TXT_USER_CANT_ADD_TO_HIGHLIGHTED + "\n" + TXT_USER_ALREADY_IN_IGNORED); return false; } remove_empty('sel-highlight'); opt.value = user_id; opt.setAttribute('id', 'uh'+user_id); opt.appendChild(document.createTextNode(nick)); getElement('sel-highlight').appendChild(opt); reload(); } function check_in_combo(combo, value) { var sel = getElement(combo).options; for (var i = 0; i < sel.length; i++) { if (sel[i].text == value) { return true; } } return false; } /** * Remove empty value in combo box. * * @param string * $element ID of combo box. * @return void */ function remove_empty(element) { var e_name; if (element == 'sel-ignore') { e_name = 'ui0'; } else { e_name = 'uh0'; } if (getElement(e_name) != null) { sel = getElement(element); sel.removeChild(sel.options[getElement(e_name).index]); } } /** * Enable button. * * @param string * $element Button ID, which you can enable. * @return void */ function enable_clear(element) { var e = getElement('rem-'+element); var sel = getElement('sel-'+element); if (sel.options.length > 0) { e.setAttribute('disabled', ''); e.disabled = false; } } /** * Remove selected user from multi combo box. * * @param string * $element Parent element, where need remove users from list. * @return void */ function rem_sel_user(element) { var e = getElement(element); var e_rem; for (var i = e.options.length-1; i >= 0; i--) { if (e.options[i].selected == true) { e.removeChild(e.options[i]); } } if (e.id == 'sel-ignore') { e_rem = 'ignore'; } else { e_rem = 'highlight'; } if (e.options.length == 0) { var opt = document.createElement('option'); opt.value = ''; opt.setAttribute('id', 'u'+(e_rem == 'ignore' ? 'i' : 'h')+'0'); opt.appendChild(document.createTextNode('')); getElement('sel-'+e_rem).appendChild(opt); } getElement('rem-'+e_rem).disabled = true; enable_reload(); } /** * Enable / disable add user button. * * @param object * $element Object of element, which enable or disable. * @return void. */ function enable_add(element) { var te = 'add-'+(element == 'h' ? 'highlight' : 'ignore'); var e = getElement(te); if (e.value.length > 0) { getElement('b'+te).disabled = false; } else { getElement('b'+te).disabled = true; } } function checkLoginFrm() { if (cJsLib.empty(cJsLib.$('loginName').value)) { alert(TXT_BAD_USERNAME_LOGIN); return false; } if (cJsLib.empty(cJsLib.$('loginPass').value)) { alert(TXT_BAD_PASSWORD_LOGIN); return false; } return true; } // user search functions {{{ var user; var sel; function add_user(element) { var id = element.name; if (id == 'add_highlight') { user = getElement('add-highlight'); sel = getElement('sel-highlight'); if (check_in_combo('sel-ignore', user.value)) { alert(TXT_USER_CANT_ADD_TO_HIGHLIGHTED + "\n" + TXT_USER_ALREADY_IN_IGNORED); user.value = ''; return false; } } else { user = getElement('add-ignore'); sel = getElement('sel-ignore'); if (check_in_combo('sel-highlight', user.value)) { alert(TXT_USER_CANT_ADD_TO_IGNORED + "\n" + TXT_USER_ALREADY_IN_HIGHLIGHTED); user.value = ''; return false; } } if (sel.options.length >= 50) { alert(TXT_EXCEED_MAXIMUM_USERS); return false; } if (check_in_combo(sel.id, user.value)) { alert(TXT_USER_ALREADY_EXISTS_IN_SELECTION); user.value = ''; return false; } if (user.value != '') { create_xhr(); xhr.onreadystatechange = function() { if (xhr.readyState == 0 || xhr.readyState == 4) { if (xhr.status == 200) { var opt = document.createElement('option'); if (xhr.responseXML.getElementsByTagName('user')[0].hasChildNodes()) { var uid; if (xhr.responseXML.getElementsByTagName('id')[0].firstChild.textContent == undefined) { // M$ fix uid = xhr.responseXML.getElementsByTagName('id')[0].firstChild.text; value = xhr.responseXML.getElementsByTagName('nick')[0].firstChild.text; nick = xhr.responseXML.getElementsByTagName('nick')[0].firstChild.text; } else { // valid browsers uid = xhr.responseXML.getElementsByTagName('id')[0].firstChild.textContent; value = xhr.responseXML.getElementsByTagName('nick')[0].firstChild.textContent; nick = xhr.responseXML.getElementsByTagName('nick')[0].firstChild.textContent; } remove_empty(sel.id); opt.value = value opt.setAttribute('id', 'u'+(sel.id == 'sel-highlight' ? 'h' : 'i')+uid); opt.appendChild(document.createTextNode(nick)); sel.appendChild(opt); user.value = ''; if (getElement('filter').value == TXT_ACTIVATE) { getElement('filter').disabled = false; } else { enable_reload(); } } else { alert(TXT_USER_DOES_NOT_EXISTS); } } else { show_xhr_error(); } } }; xhr.open('GET', TXT_URL_DISCUSSION + 'ajax/check_user.php?user=' + user.value, true); xhr.send(null); } } // }}} /** * Reset all settings on filter and deactive it. * * @return void */ function reset_filter() { if (confirm(TXT_REALLY_DELETE_FILTER_SETTINGS)) { getElement('search-user').value = ''; getElement('user-only').value = ''; var e = getElement('sel-highlight'); for (var i = e.options.length-1; i >= 0; i--) { e.removeChild(e.options[i]); } e = getElement('sel-ignore'); for (var i = e.options.length-1; i >= 0; i--) { e.removeChild(e.options[i]); } u_filter('0'); } } /** * Add user to only user filter. * * @param string * $nick Nickname. * @return void */ function add_only(nick) { if (check_in_combo('sel-ignore', nick) == true) { alert(TXT_USER_CAN_NOT_ADD + "\n" + TXT_USER_IS_ALREADY_IGNORED); return false; } getElement('user-only').value = nick; reload(); } /** * Add user to ignored combo box. * * @param integer * user_id User ID. * @param sring * nick Nickname. * @return void */ function add_ignore(user_id, nick) { var opt = document.createElement('option'); var err = false; var mes = ''; if (check_in_combo('sel-ignore', nick) == true) { mes = TXT_USER_ALREADY_EXISTS_IN_SELECTION; err = true; } if (err === false && getElement('user-only').value == nick) { mes = TXT_USER_CANT_ADD_TO_IGNORED + "\n" + TXT_USER_IS_ALREADY_IN_FIELD_SHOW_ONLY_USERS; err = true; } if (err === true) { alert(mes); return false; } if (confirm(TXT_REALLY_IGNORE_USER)) { remove_empty('sel-ignore'); opt.value = user_id; opt.setAttribute('id', 'ui'+user_id); opt.appendChild(document.createTextNode(nick)); getElement('sel-ignore').appendChild(opt); reload(); if (getElement('filter').value == TXT_ACTIVATE) { getElement('filter').disabled = false; } } } /** * Show / hide element. * * @param object $element Element object. * @return void */ function show(element) { if (element.style.display == 'block') { element.setAttribute('style', 'display:none;'); element.style.display = 'none'; } else { element.setAttribute('style', 'display:block;'); element.style.display = 'block'; } return true; } /** * Mark all admins info as readed and remove it. * * @return void */ function closePermInfo() { if (! closingPermInfo) { closingPermInfo = true; var ajaxIndex = ajaxObject.length; // create new AJAX object ajaxObject[ajaxIndex] = new XHR(); // store created AJAX as alias var ajax = ajaxObject[ajaxIndex]; ajax.setMethod('GET') .setRequestFile(TXT_URL_DISCUSSION + 'ajax/close-perm-info.php'); // redefine function which execute after AJAX ajax.onCompletion = function(response) { var actInfo = null; if ((actInfo = cJsLib.$('active-info')) && cJsLib.isObject(actInfo)) { actInfo.parentNode.removeChild(actInfo); } } // run the AJAX ajax.runAjax(); closingPermInfo = false; } }; /** * Check value filter by user only button and if value is changed, reload * filter. * * @return void */ function check_only() { var value = getElement('user-only').value; var sel = getElement('sel-ignore').options; last_only = getElement('user-only'); filter_check_length(getElement('user-only'), 64); if (value != last_only) { for (var i = 0; i < sel.length; i++) { if (sel[i].text == value && sel[i].text != '') { alert(TXT_USER_IS_IGNORED_CANNOT_SHOW_HIS_CONTRIBUTIONS_ONLY); getElement('user-only').value = ''; return false; } } if (value != '') { create_xhr(); xhr.onreadystatechange = function() { if (xhr.readyState == 0 || xhr.readyState == 4) { if (xhr.status == 200) { var opt = document.createElement('option'); var xml = xhr.responseXML.getElementsByTagName('user')[0]; if (xml.hasChildNodes()) { if (xhr.responseXML.getElementsByTagName('nick')[0].firstChild.textContent == undefined) { // M$ fix nick = xhr.responseXML.getElementsByTagName('nick')[0].firstChild.text; id = xhr.responseXML.getElementsByTagName('id')[0].firstChild.text; next = xhr.responseXML.getElementsByTagName('next')[0].firstChild.text; } else { nick = xhr.responseXML.getElementsByTagName('nick')[0].firstChild.textContent; id = xhr.responseXML.getElementsByTagName('id')[0].firstChild.textContent; next = xhr.responseXML.getElementsByTagName('next')[0].firstChild.textContent; } if (next == '1') { if (confirm(TXT_SPECIFIED_USER_DOES_NOT_EXISTS + "\n" + TXT_NEAREST_USER_IS + nick + ".\n" . TXT_DO_YOU_CAN_FILL_THIS_USER)) { sel = getElement('sel-ignore').options; for (var i = 0; i < sel.length; i++) { if (sel[i].text == nick) { alert(TXT_USER_IS_ALREADY_IN_INGNORED_CAN_NOT_FILTER_HIS_CONTRIBUTIONS_ONLY); getElement('user-only').value = ''; return false; } } getElement('user-only').value = nick; last_only = nick; if (getElement('filter').value == TXT_DEACTIVATE) { enable_reload(); } else { getElement('filter').disabled = false; } } else { getElement('user-only').value = ''; } } else { getElement('user-only').value = nick; last_only = nick; if (getElement('filter').value == TXT_DEACTIVATE) { enable_reload(); } else { getElement('filter').disabled = false; } // enable_reload(); } } else if (getElement('user-only').value == '') { last_only = nick; if (getElement('filter').value == 'c') { enable_reload(); } else { getElement('filter').disabled = false; } // enable_reload(); } else { alert(TXT_USER_DOES_NOT_EXISTS); } } } }; xhr.open('GET', TXT_URL_DISCUSSION + 'ajax/check_user.php?user='+value); xhr.send(null); } else { enable_reload(); } } } var streamsTimeout = null; var visible = null; function showStreams(id) { document.getElementById('streams'+id).style.display = 'block'; if (streamsTimeout != null) clearTimeout(streamsTimeout); if (visible != null && visible != id) doHideStreams(visible); visible = id; } function hideStreams(id) { streamsTimeout = setTimeout('doHideStreams('+id+')', 300); } function doHideStreams(id) { getElement('streams'+id).style.display = 'none'; } function poll_vote(pollID) { var vote = 0; var r = document.forms['poll'+pollID].elements['vote']; for (var i = 0; i < r.length; i++) if(r[i].checked) vote = r[i].value; if (vote != 0) poll_submit(pollID, vote); } var pollVoting = false; function poll_submit(pollID, voteID) { if (!pollVoting) { pollVoting = true; var ajaxIndex = ajaxObject.length; // create new AJAX object ajaxObject[ajaxIndex] = new XHR(); // store created AJAX as alias var ajax = ajaxObject[ajaxIndex]; ajax.element = 'poll-' + pollID; // set requested script file ajax.method = 'GET'; ajax.requestFile = '/res/ajax/poll-vote.php'; // set up URL parameter ajax.setVar('pollID', pollID); ajax.setVar('voteID', voteID); // run the AJAX ajax.runAjax(); pollVoting = false; } } function moreButtonClick(type, back, more) { var el = document.getElementById(type + '-more'); var show = (el.style.display == 'none'); el.style.display = show ? 'block' : 'none'; document.getElementById(type + '-more-b').innerHTML = ' ' + (show ? back : more); } function playerInjuriesShow(type) { document.getElementById('injuries-' + (type == 'full' ? 'short' : 'full')).style.display = 'none'; document.getElementById('injuries-' + type).style.display = 'block'; } var fullShown = {}; function showFull(e, table_id) { $('#' + table_id).find('tr.fullonly').toggle(); bt = $(e).find('.buttontext'); if (fullShown[table_id] == null) { fullShown[table_id] = bt.html(); bt.html('Back'); } else { bt.html(fullShown[table_id]); fullShown[table_id] = null; } } var tzOpen = false; var tzLoaded = false; function tz(url) { var e = document.getElementById('timezones'); if (tzOpen) { e.style.display = 'none'; tzOpen = false; } else { e.style.display = 'block'; tzOpen = true; if (!tzLoaded) { var ajaxIndex = ajaxObject.length; // create new AJAX object ajaxObject[ajaxIndex] = new XHR(); // store created AJAX as alias var ajax = ajaxObject[ajaxIndex]; ajax.element = 'timezones'; ajax.setVar('url', url); // set requested script file ajax.method = 'GET'; ajax.requestFile = '/res/ajax/timezones.php'; // run the AJAX ajax.runAjax(); tzLoaded = true; } } } function tzover(e) { e.className = 'over'; } function tzout(e) { e.className = ''; } var tzHideTimeout = null; function tzHide() { tzHideTimeout = setTimeout('tzDoHide()', 1000); } function tzStopHiding() { if (tzHideTimeout != null) clearTimeout(tzHideTimeout); } function tzDoHide() { document.getElementById('timezones').style.display = 'none'; tzOpen = false; } var to_hide = new Array(); var firstLoad = new Array(); var divShown = {}; var prevString = new Array(); var prevCountry = new Array(); var types = new Array(); var moreparams = new Array(); var mutualSelectedSex = {1: '', 2: ''}; var mutualSelectedUrl = {1: '', 2: ''}; var defaultTexts = new Array(); function searchLoad(id) { clearTimeout(to_hide[id]); if (firstLoad[id]) { attr = $('#search-text-' + id).attr('data-deftext'); hasAttr = typeof attr !== typeof undefined && attr !== false; val = $('#search-text-' + id).val(); defaultTexts[id] = hasAttr ? attr : val; if (!hasAttr || attr == val) { $('#search-text-' + id).val(''); } firstLoad[id] = false; } string = new String($('#search-text-' + id).val()); string = string.replace(/^\s+|\s+$/, ''); country = $('#search-country-' + id).length ? $('#search-country-' + id).val() : ''; if (id == 'mut1') { types[id] = mutualSelectedSex[2] != '' ? mutualSelectedSex[2] : 'p'; } if (id == 'mut2') { types[id] = mutualSelectedSex[1] != '' ? mutualSelectedSex[1] : 'p'; } if (string.length >= 2) { if (string.length - (string.lastIndexOf(' ') + 1) < 2) { string = string.substring(0, string.lastIndexOf(' ')); } if (string != prevString[id] || country != prevCountry[id]) { if (!divShown[id]) { $.each(divShown, function(key, val) { if (val) { clearTimeout(key); doSearchHide(key, false); } }); $('#search-results-' + id).show().html('
'); divShown[id] = true; } jQuery.ajax({ url: '/res/ajax/search.php', type: 'GET', data: 's=' + string + '&t=' + types[id] + '&c=' + country + moreparams[id], cache: false, dataType: 'json', success: function(data) { if (data.nodata) { $('#search-results-' + id).html('
No result found.
'); notOne = true; } else { $('#search-results-' + id).html(''); for (i = 0; i < data.links.length; i++) { link = data.links[i]; if (id == 'pt') { $('#search-results-' + id).append(' ' + link.name + ''); } else if (link.type == 't') { $('#search-results-' + id).append(' ' + link.name + ''); } else if (id == 'mut1' || id == 'mut2') { var re = new RegExp("'"); $('#search-results-' + id).append('' + link.name + ''); } else { $('#search-results-' + id).append('' + link.name + ''); } } notOne = data.links.length != 1; } if ((id == 'mut1' || id == 'mut2') && notOne) { mutualSelectedUrl[id.charAt(3)] = ''; } } }); prevString[id] = string; prevCountry[id] = country; } } else if (divShown[id]) { doSearchHide(id, false); } } function searchHide(id, setDefaultText) { to_hide[id] = setTimeout('doSearchHide(\'' + id + '\', ' + setDefaultText + ')', 200); } function doSearchHide(id, setDefaultText) { $('#search-results-' + id).hide(); divShown[id] = false; prevString[id] = ''; prevCountry[id] = ''; if (setDefaultText) { if ($('#search-text-' + id).val() == '') { $('#search-text-' + id).val(defaultTexts[id]); defaultTexts[id] = ''; firstLoad[id] = true; } } } function checkSearchForm(id) { if ($('#search-text-' + id).val().length < 2 && ($('#search-country-' + id).length == 0 || $('#search-country-' + id).val() == '')) { alert(TXT_SHORT_SEARCHED_TEXT); return false; } else { $('#search-submit-' + id).click(); return true; } } function searchInit() { $('[data-searchid]').each(function() { var sid = $(this).attr('data-searchid'); $(this).attr('id', 'search-text-' + sid); $(this).attr('name', 'search-text-' + sid); $(this).attr('autocomplete', 'off'); $(this).blur(function() { searchHide(sid, true); }); $(this).focus(function() { searchLoad(sid); }); $(this).keyup(function(e) { if ((e.keyCode || e.which) != 13) { searchLoad(sid); } }); if (sid == 'tour' || sid == 'plr') { $(this).keypress(function(e) { if ((e.keyCode || e.which) == 13) { rightSearchSubmit(sid); } }); } if (!$('#search-results-' + sid).length) { $(this).after('
'); } if ($('#search-country-' + sid).length) { $('#search-country-' + sid).blur(function() { searchHide(sid, true); }); $('#search-country-' + sid).focus(function() { searchLoad(sid); }); $('#search-country-' + sid).change(function() { searchLoad(sid); }); } to_hide[sid] = ''; firstLoad[sid] = true; divShown[sid] = false; prevString[sid] = ''; prevCountry[sid] = ''; types[sid] = $(this).attr('data-searchtype'); mp = $(this).attr('data-moreparams'); moreparams[sid] = typeof mp !== typeof undefined && mp !== false ? mp : ''; }); } function rightSearchSubmit(id) { string = new String($('#search-text-' + id).val()); string = string.replace(/^\s+|\s+$/, ''); if (string.length >= 2) { doSearchHide(id, false); var prevBut = $('#search-but-' + id).html(); $('#search-but-' + id).html(''); jQuery.ajax({ url: '/res/ajax/search.php', type: 'GET', data: 's=' + string + '&t=' + (id == 'tour' ? 't' : 'p') + '&all=1', cache: false, dataType: 'json', success: function(data) { if (data.nodata) { alert('No result found.'); } else if (data.toomuch) { alert(id == 'tour' ? 'Too many results.\nPlease specify tournament name.' : "Too many results.\nPlease specify player's name."); } else if (data.links.length == 1) { window.location = '/player/' + data.links[0].url; } else { $('#search-text-' + id).blur(); $('#search-results-box-' + id).html(''); for (i = 0; i < data.links.length; i++) { link = data.links[i]; $('#search-results-box-' + id).append('' + link.name + ' »
'); } $('#search-results-box-' + id).css('display', 'block'); } $('#search-but-' + id).html(prevBut); } }); } } function mutualClick(id, sex, name, url) { i = id.charAt(3); mutualSelectedSex[i] = sex.charAt(0); $('#search-text-' + id).val(name.replace(/ \([A-Z]+\)/, '')); mutualSelectedUrl[i] = url; if (mutualSelectedUrl[i == 1 ? 2 : 1] != '') { $('#search-but-mut').replaceWith(''); window.location = '/mutual/' + mutualSelectedUrl[1] + '/' + mutualSelectedUrl[2] + '/'; } } function mutualSubmit() { but = $('#search-but-mut').replaceWith(''); if ($('#search-text-mut1').val().length < 2 || $('#search-text-mut2').val().length < 2) { alert(TXT_SHORT_SEARCHED_TEXT); $('#search-but-mut').replaceWith(but); return false; } else { return true; } } function playerTournamentSearchClick(tid, name, url) { $('#ptresults').show().html('
'); $('#search-text-pt').val(name); jQuery.ajax({ url: '/res/ajax/player-tournament-search.php', type: 'GET', data: 'tid=' + tid + '&url=' + url + '&' + $('#ptresults').attr('data-params'), cache: false, dataType: 'text', success: function(data) { $('#ptresults').html(data); } }); } function showSocialBox() { if ($('#social-abs').length == 0) { return; } if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) { return; } contentAdded = false; window.___gcfg = {lang: 'en'}; (function() { var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; po.src = 'https://apis.google.com/js/plusone.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); })(); $('#social-abs').children('.content').append('
'); contentAdded = true; $('body').prepend('
'); (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); $('#social-abs').children('.content').append('
'); contentAdded = true; if (contentAdded) { $('#social-abs').children('.content').append('
 
'); $('#social-abs').show(); } } function toggleTweetImage(e) { e = $(e); original_height = e.children().first().height(); new_height = e.height() == original_height ? 200 : original_height; e.height(new_height); e.children('.brd').height(new_height - 10); } function betRankYearChange(e, act) { if ($(e).val() == act) { $('#betRankRangeSelect').removeAttr('disabled'); } else { $('#betRankRangeSelect').attr('disabled', 'disabled').val(act); } } function betRankRightChange(i) { cTabMenu('betrank-', i, 2, true, false, ''); $('#betrankbutton').attr('href', '/ranking/betting-ranking/' + (i == 1 ? '' : '?type=worst')); } function tipclick(id) { $('#tipcomment-' + id).toggle(); } var commentsFormShown = false; function commentsShowForm() { if (!commentsFormShown) { $('#addCommentBox').remove(); $('#addCommentForm').show(); commentsFormShown = true; } } function commentsTab(parent) { commentsShowForm(); li = $('#addCommentForm').find('li'); $(li[parent == 0 ? 0 : 1]).addClass('set'); $(li[parent == 0 ? 1 : 0]).removeClass('set'); $('#parent_id').val(parent); if (parent) { $('html, body').animate({scrollTop: $('#comments').offset().top}, 0); } $('#commContent').focus(); } function load_comments(logged) { if (!logged) { $('.comments-link').show(); return; } ids = []; $('.comments-link').each(function() { ids.push($(this).attr('data-aid')); }); jQuery.ajax({ url: '/res/ajax/load-new-comments-count.php', type: 'GET', data: 'ids=' + ids.join(','), cache: false, dataType: 'json', success: function(data) { if (data.logged) { $('.comments-link').each(function() { aid = $(this).attr('data-aid'); tspan = $(this).children('.t'); ctot = tspan.html(); ctot = ctot.substring(0, ctot.indexOf(' ')); cnew = aid in data.counts ? data.counts[aid] : ctot; tspan.attr('title', 'number of comments (number of new comments)').html(ctot + ' ' + (cnew > 0 ? '' : '') + '(' + cnew + ')' + (cnew > 0 ? '' : '')); $(this).show(); }); } else { $('.comments-link').show(); } } }); } function comments_set_read(aid) { jQuery.ajax({ url: '/res/ajax/comments-set-read.php', type: 'GET', cache: false, data: 'aid=' + aid }); } function comment_show(e) { par = $(e).parent().parent(); par.children('.ignored-info').hide(); par.children('.ignored-comment').show(); } function comment_hide(e) { par = $(e).parent().parent().parent(); par.children('.ignored-info').show(); par.children('.ignored-comment').hide(); } var pastTournamentGamesOpened = null; function pastTournamentGamesClick(id) { if (pastTournamentGamesOpened != null) { $('#ptg-' + pastTournamentGamesOpened).hide(); $('#ptg-' + pastTournamentGamesOpened + '-row').find('a').toggleClass('bold'); } if (id == pastTournamentGamesOpened) { pastTournamentGamesOpened = null; } else { $('#ptg-' + id).show(); $('#ptg-' + id + '-row').find('a').toggleClass('bold'); pastTournamentGamesOpened = id; } } var tournamentListShown = 'all'; function tournamentList(type) { if (type == tournamentListShown) { return; } $('#li_' + tournamentListShown).removeClass('set'); $('#li_' + type).addClass('set'); tournamentListShown = type; if (type == 'all') { $('#tournamentList').find('tr').show(); } else if (type == 'main') { $('#tournamentList').find('tr[data-main=1]').show(); $('#tournamentList').find('tr[data-main=0]').hide(); } else if (type == 'lower') { $('#tournamentList').find('tr[data-main=1]').hide(); $('#tournamentList').find('tr[data-main=0]').show(); } if (type != 'all') { $('#tournamentList').find('.month').show(); $('#tournamentList').find('.month').each(function() { if ($(this).nextAll(':visible').first().hasClass('month')) { $(this).hide(); } }); } tournamentListScroll(type); } var tournament_list_scroll_all_id = ''; function tournamentListScroll(type) { if (type == 'all') { type = tournament_list_scroll_all_id; } if (type != '' && $('#first-actual-' + type).length) { $('html, body').animate({scrollTop: $('#first-actual-' + type).offset().top}, 300); } } $(document).on('mouseenter', '.oup, .odown', function() { $(this).children('.odds-change-div').show(); }); $(document).on('mouseleave', '.oup, .odown', function() { $(this).children('.odds-change-div').hide(); }); var draw_content_width = 0; var draw_window_width = 0; var block_scroll_handler = false; function draw_init(height, count_levels, count_players) { has_scroll_x = count_levels > 3; has_scroll_y = count_players > 32; draw_content_width = count_levels * 140 + 10; draw_window_width = has_scroll_y ? 472 : 487; $('#draw-preloader').hide(); $('#draw').css('height', height).show().scrollLeft(0).scrollTop(0); if (has_scroll_x) { but_top = Math.round(height / 2) - 20; $('#scrollbutton-left').css('top', but_top).css('left', 5); $('#scrollbutton-right').css('top', but_top).css('left', has_scroll_y ? 427: 442).show(); } $('#draw').scroll(function() { if (!block_scroll_handler) { check_scroll_buttons(); } }); } function draw_scroll(dir) { prev_scroll = $('#draw').scrollLeft(); new_scroll = Math.max(0, prev_scroll + (dir * (prev_scroll == 0 ? 151 : 140))); if (new_scroll <= 11) new_scroll = 0; block_scroll_handler = true; $('#draw').animate({ scrollLeft: new_scroll }, 150, function() { check_scroll_buttons(); block_scroll_handler = false; }); } function check_scroll_buttons() { scroll = $('#draw').scrollLeft(); $('#scrollbutton-left').toggle(scroll > 0); $('#scrollbutton-right').toggle(scroll + draw_window_width < draw_content_width); } function ranking_check_sumbit() { date = $('#rform-date').val(); name = $('#search-text-ran').val(); if (name == "Type in player's name") name = ''; country = $('#search-country-ran').val(); window.location = '?date=' + date + (name != '' ? '&search-text-ran=' + encodeURIComponent(name) : '') + (country != '' ? '&country=' + country : ''); return false; } function drawclick(draw) { url = window.location.href; if (draw) { if (url.indexOf('draw=1') == -1) { window.history.pushState('drawclick', null, url + (url.indexOf('?') == -1 ? '?' : '&') + 'draw=1'); } } else { if (url.indexOf('draw=1') > -1) { if (url.indexOf('draw=1&') > -1) { newurl = url.replace('draw=1&', ''); } else { newurl = url.replace('draw=1', ''); newurl = newurl.substring(0, newurl.length - 1); } window.history.pushState('drawclick', null, newurl); } } } window.onpopstate = function(e) { if ($('#draw').length > 0) { if (window.location.href.indexOf('draw=1') > -1) { cTabMenu('tournamentTabs-', 2, 2, true, true); } else { cTabMenu('tournamentTabs-', 1, 2, true, true); } } }; (function(a){(jQuery.browser=jQuery.browser||{}).mobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera);