/*************************************************************************** * utils.js * --------- * begin : Ignatov V. Oleg, Apr 19, 2006 * author : Ignatov V. Oleg (o.ignatov@westpower.ru) * author : Shelenkov V. Evgeniy (e.shelenkov@westpower.ru) * copyright : (C) 2006-2008 West Power Development Studio * mail : support@westpower.ru * url : www.westpower.ru * license : commerce * * $Id: utils.inc.js,v 1.38 2008/07/10 09:03:56 N.Safronov Exp $ * ***************************************************************************/ /** КЛАСС дополнительных ф-ции и перемсенных **/ utils = function utils() { }; utils.client_pc = navigator.userAgent.toLowerCase(); // Get client info utils.client_ver = parseInt(navigator.appVersion); // Get browser version utils.is_ie = ((utils.client_pc.indexOf("msie") != -1)); utils.is_firefox = ((utils.client_pc.indexOf("firefox") != -1)); utils.is_safari = ((utils.client_pc.indexOf("safari") != -1)); utils.is_opera = ((utils.client_pc.indexOf("opera") != -1)); utils.is_win = ((utils.client_pc.indexOf("win")!=-1) || (utils.client_pc.indexOf("16bit") != -1)); utils.is_mac = (utils.client_pc.indexOf("mac")!=-1); utils.print_r = function(array) { var text = ''; for (var id in array){ text = text+" ["+id+"] = "+array[id]+";\n"; }; alert(text); }; utils.print_box = function (array) { var text = ''; for (var id in array){ text = text+" ["+id+"] = "+array[id]+";\n"; }; document.write(''); }; utils.in_array_object = function (id, haystack) { for (var value in haystack) { if (haystack[value].id == id) { return true; } } return false; }; utils.in_array = function (id, haystack) { for (var i = 0; i < haystack.length; i++) { if (haystack[i] == id) { return true; } } return false; }; utils.mozilla_wrap = function (textarea, open_tag, close_tag) { var select_length = textarea.textLength; var select_start = textarea.selectionStart; var select_end = textarea.selectionEnd; if (select_end == 1 || select_end == 2) { select_end = select_length; } var part_1 = (textarea.value).substring(0,select_start); var part_2 = (textarea.value).substring(select_start, select_end) var part_3 = (textarea.value).substring(select_end, select_length); textarea.value = part_1 + open_tag + part_2 + close_tag + part_3; return; }; utils.str_replace = function (search, replace, subject) { if (replace == subject) { return search; } subject = subject.toString(); var flag = subject.indexOf(replace) == -1 ? true : false; var replace_location = search.indexOf(replace); var prev_sym = (replace_location > 0 ? search.substr(replace_location-1, 1) : ""); var next_sym = replace_location+replace.length < search.length ? search.substr(replace_location+replace.length, 1) : ""; var temp_string = search; var left_string = ''; var right_string = ''; while (replace_location != -1) { if(flag || (utils._str_replace_internal_check(prev_sym) && utils._str_replace_internal_check(next_sym))) { left_string = temp_string.substring(0, replace_location); right_string = temp_string.substring(replace_location + replace.length); temp_string = left_string + subject + right_string; replace_location = temp_string.indexOf(replace, replace_location+1); if(replace_location != -1) { prev_sym = temp_string.substr(replace_location-1, 1); next_sym = replace_location+replace.length < temp_string.length ? temp_string.substr(replace_location+replace.length, 1) : ""; } } else { replace_location = temp_string.indexOf(replace, replace_location+1); } } return temp_string; }; utils._str_replace_internal_check = function(char) { var check_string = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"; if(check_string.indexOf(char) == -1 || char == "") { return true; } return false; }; utils.get_top_pos = function (inputObj) { // функция работает правильно (в софари) - только при выравнивании valign=top var returnValue = inputObj.offsetTop; while((inputObj = inputObj.offsetParent) != null){ if(inputObj.tagName!='HTML') returnValue += inputObj.offsetTop; } return returnValue; }; utils.get_left_pos = function (inputObj) { // функция работает правильно (в софари) - только при выравнивании align=left var returnValue = inputObj.offsetLeft; while((inputObj = inputObj.offsetParent) != null){ if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft; } return returnValue; }; utils.get_array_size = function (array) { for (i = 0; i < array.length; i++) { if ((array[i] == "undefined") || (array[i] == "") || (array[i] == null)) { return i; } } return array.length; } utils.array_push = function (array, value) { array[utils.get_array_size(array)] = value; } utils.array_delete_last = function (array) { array_size = utils.get_array_size(array); retval = array[array_size - 1]; delete array[array_size - 1]; return retval; } utils.store_caret = function (textEl) { if (textEl.createTextRange) { textEl.caretPos = document.selection.createRange().duplicate(); } } utils.open_popup_window = function (url) { window.open(url,'full_window','height='+screen.availHeight+',width='+screen.availWidth+',scrollbars=yes,status=no,menubar=no,location=no,directories=no,fullscreen=yes,resizable=yes'); } utils.show_hide = function (elmt_id) { var new_element_id = elmt_id + '_body'; if ((document.getElementById(new_element_id) == "undefined") || (document.getElementById(new_element_id) == "") || (document.getElementById(new_element_id) == null)) { return ; } if (document.getElementById(elmt_id + '_body').style.display == "none") { if (utils.is_ie) { document.getElementById(elmt_id + '_body').style.display = "block"; } else { document.getElementById(elmt_id + '_body').style.display = "table"; } } else { document.getElementById(elmt_id + '_body').style.display = "none"; } } utils.show = function (elmt_id) { var new_element_id = elmt_id + '_body'; if (utils.is_ie) { document.getElementById(elmt_id + '_body').style.display = "block"; } else { document.getElementById(elmt_id + '_body').style.display = "block"; } } utils.hide = function (elmt_id) { var new_element_id = elmt_id + '_body'; document.getElementById(elmt_id + '_body').style.display = "none"; } utils.mouse_position = function (event) { event || (event = window.event); var x_pos = 0; var y_pos = 0; if (!document.attachEvent && document.addEventListener) { x_pos = event.clientX + window.scrollX; y_pos = event.clientY + window.scrollY; } if (document.attachEvent != null) { x_pos = window.event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); y_pos = window.event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); } return {x_pos:x_pos, y_pos:y_pos}; } wp_ajax = function wp_ajax() { }; wp_ajax.execute_scripts_hmtl = function(varr) { var sct = varr.getElementsByTagName('script'); for( var h = 0; h < sct.length; h++) { if (utils.is_ie) { var scrpt = sct[h].innerHTML scrpt = scrpt.replace('//', ''); var src = document.createElement("div"); src.style.display = 'none'; var scrpt_src = ''; if (sct[h].src != '') { scrpt_src = 'src="'+sct[h].src+'?1=1"'; } var str = 'MSIE...