/***************************************************************************
* 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...