// JavaScript Document
function email(login,domain)
{
eml = login + "@" + domain;
document.write (eml);
}
function a_email(login,domain,a_content,a_text)
{
if(a_email.arguments.length < 3) a_content = "";
eml = login + "@" + domain;
if(a_email.arguments.length == 4) a_str = ''+ a_text + '';
else a_str = ''+ eml + '';
document.write (a_str);
} // end function a_email(login,domain,a_content)
//*********************************************************************
// служебные функции подписки и отписки объекта на событие
function addHandler(object, event, handler, useCapture) {
if (object.addEventListener) {
object.addEventListener(event, handler, useCapture ? useCapture : false);
} else if (object.attachEvent) {
object.attachEvent('on' + event, handler);
} else alert("Add handler is not supported");
}
function removeHandler(object, event, handler) {
if (object.removeEventListener) {
object.removeEventListener(event, handler, false);
} else if (object.detachEvent) {
object.detachEvent('on' + event, handler);
} else alert("Remove handler is not supported");
}
//*********************************************************************
/*
wwww.tigir.com - 06.07.2006
Source: http://www.tigir.com/js/opacity.js
Библиотека opacity.js к статье "CSS прозрачность (css opacity, javascript opacity)" - http://www.tigir.com/opacity.htm
setElementOpacity - установка прозрачности
getOpacityProperty - проверка, есть ли возможность менять прозрачность
*/
/* Функция кроссбраузерной установки прозрачности
Пример: setElementOpacity(document.body, 0.5); //сделать документ прозрачным на половину
*/
function setElementOpacity(oElem, nOpacity)
{
var p = getOpacityProperty();
(setElementOpacity = p=="filter"?new Function('oElem', 'nOpacity', 'nOpacity *= 100; var oAlpha = oElem.filters["DXImageTransform.Microsoft.alpha"] || oElem.filters.alpha; if (oAlpha) oAlpha.opacity = nOpacity; else oElem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")";'):p?new Function('oElem', 'nOpacity', 'oElem.style.'+p+' = nOpacity;'):new Function)(oElem, nOpacity);
}
// Функция getOpacityProperty() возвращает свойство которое используется для смены прозрачности или undefined, и может использоваться для проверки возможности изменения прозрачности
function getOpacityProperty()
{
var p;
if (typeof document.body.style.opacity == 'string') p = 'opacity';
else if (typeof document.body.style.MozOpacity == 'string') p = 'MozOpacity';
else if (typeof document.body.style.KhtmlOpacity == 'string') p = 'KhtmlOpacity';
else if (document.body.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5) p = 'filter';
return (getOpacityProperty = new Function("return '"+p+"';"))();
}
//*********************************************************************
// определение позиции верхнего левого угла элемента на странице
function getPosition(e){
var left = 0;
var top = 0;
while (e.offsetParent){
left += e.offsetLeft;
top += e.offsetTop;
e = e.offsetParent;
}
left += e.offsetLeft;
top += e.offsetTop;
return {x:left, y:top};
}
// координаты элемента
// на выходе - объект со свойствами left, top, width, height, несущими координаты элемента
function getElementPosition(elem)
{
// var elem = document.getElementById(elemId);
var w = elem.offsetWidth;
var h = elem.offsetHeight;
var l = 0;
var t = 0;
if(navigator.appName != "Opera" ){
while (elem)
{
l += elem.offsetLeft;
t += elem.offsetTop;
elem = elem.offsetParent;
}
} else {
l = elem.offsetLeft;
t = elem.offsetTop;
}
return {"left":l, "top":t, "width": w, "height":h};
} // end function getElementPosition(elemId)
//*********************************************************************
//===============
// определение координат мышки ()
function mouseCoords(ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
// относительная позиция координат (относительно объекта target)
function getMouseOffset(target, ev){
ev = ev || window.event;
var docPos = getPosition(target);
var mousePos = mouseCoords(ev);
return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}
//*********************************************************************
//*******************************************************************
// Активирование (CSS) элемента горизонтального меню, путем сравнения строк меню
// и значений top_menu_item - для верхнего меню и left_menu_item - для левого меню
function activate_menu(){
var reg_teg = /\<.*?\/?\>/mg; // для удаления вложенных тегов
var reg_space = /\s+/mg; // для удаления пробелов...
// блок для верхнего меню
var top_menu_str = arguments.callee.top_menu_item;
if(top_menu_str.length > 0){
var el_top_menu_table = document.getElementById("top_tbl");
var el_A_array = el_top_menu_table.getElementsByTagName("A");
var menu_str = top_menu_str;
menu_str = menu_str.replace(reg_teg,'');
menu_str = menu_str.replace(reg_space,'');
for(var i=0; i< el_A_array.length; i++){
var a_str = el_A_array[i].innerHTML;
// вырезаем теги
test_str = a_str.replace(reg_teg,'');
// вырезаем пробелы
test_str = test_str.replace(reg_space,'');
if(test_str == menu_str){
// alert(test_str+' || '+menu_str);
//получаем td или Р (для MSIE)
var el_td = el_A_array[i].offsetParent;
// el_td.className = "td_1";
// находим и меняем класс параграфа для элемента меню
// с учетом браузера!
if(navigator.userAgent.indexOf("MSIE") == -1){
var el_P_array = el_td.getElementsByTagName("P");
// Считаем, что столько-же параграфов, сколько и ссылок..
el_P_array[i].className = "top_right_menu_selected";
}else{
var el_P_array = el_td;
el_P_array.className = "top_right_menu_selected";
}
}
}// end for(var i=0; i< el_A_array.length; i++)
} // End блок для верхнего меню
// блок для левого меню
var left_menu_str = arguments.callee.left_menu_item;
if(left_menu_str.length > 0){
var el_top_menu_table = document.getElementById("tbl_left_menu");
var el_A_array = el_top_menu_table.getElementsByTagName("A");
var menu_str = left_menu_str;
menu_str = menu_str.replace(reg_teg,'');
menu_str = menu_str.replace(reg_space,'');
for(var i=0; i< el_A_array.length; i++){
var a_str = el_A_array[i].innerHTML;
// вырезаем теги
test_str = a_str.replace(reg_teg,'');
// вырезаем пробелы
test_str = test_str.replace(reg_space,'');
if(test_str == menu_str){
// alert(test_str+' || '+menu_str);
// меняем класс td
var el_td = el_A_array[i].offsetParent;
el_td.className = "td_left_selected";
}
}// end for(var i=0; i< el_A_array.length; i++)
} // End блок для левого меню
} // end function activate_menu()
activate_menu.top_menu_item = "";
activate_menu.left_menu_item = "";
// скрытие-открытие списка, через родительский объект (РБУ)
function hide_open_ul(in_obj){
var parent_obj = in_obj.parentNode;
var ul_arr = parent_obj.getElementsByTagName("UL");
var ul_obj = ul_arr[0];
var ul_display = ul_obj.style.display;
switch(ul_display){
case "block":
ul_obj.style.display = "none";
in_obj.title = "Открыть модельный ряд";
break;
case "none":
ul_obj.style.display = "block";
in_obj.title = "Свернуть";
break;
} // end switch(ul_display)
//alert(ul_obj.style.display);
} // end function hide_open_ul(in_obj)
// учет контактных кликов
function clc(){
return;
var tmp_img = new Image();
var src_str = 'http://www.artre.ru/click/?dname='+document.domain+'&page='+document.URL;
tmp_img.src = src_str;
alert(document.domain+" "+document.URL);
return true;
}
//*********************************************************************
// wwww.tigir.com
// Как преобразовать значение цвета из rgb(n,n,n) в #HEX?
// Например, rgb(255,255,255) или rgb(100%,100%,100%) в FFFFFF. Заодно функция расширяет сокращенную шеснадцатиричную запись цвета в полную, например, #FAE в FFAAEE. Возвращается шеснадцатиричное значение цвета без ведущего символа #.
function getHexRGBColor(color)
{
color = color.replace(/\s/g,"");
var aRGB = color.match(/^rgb\((\d{1,3}[%]?),(\d{1,3}[%]?),(\d{1,3}[%]?)\)$/i);
if(aRGB)
{
color = '';
for (var i=1; i<=3; i++) color += Math.round((aRGB[i][aRGB[i].length-1]=="%"?2.55:1)*parseInt(aRGB[i])).toString(16).replace(/^(.)$/,'0$1');
}
else color = color.replace(/^#?([\da-f])([\da-f])([\da-f])$/i, '$1$1$2$2$3$3');
return color;
}
//преобразуем цвет #XXXXXX в три сотавляющие
function splitRGB(color)
{
color = getHexRGBColor(color);
var matches = color.match(/^#?([\dabcdef]{2})([\dabcdef]{2})([\dabcdef]{2})$/i);
if (!matches) return false;
for (var i=1, rgb = new Array(3); i<=3; i++) rgb[i-1] = parseInt(matches[i],16);
return rgb;
}
//*********************************************************************
//*********************************************************************
//*********************************************************************
// определяем список картинок (как массив объектов), используемых для дальнейшего отображения больших картинок.
function get_childs_images(in_id){
var el_common_table = document.getElementById(in_id);
var tmp_img_arr = el_common_table.getElementsByTagName("IMG");
for(var i=0 ; i= 0 ) rgbArr[0] = tmp_red;
// канал зеленого
var rgb_Old_green = rgbArr[1];
var tmp_green = rgbArr[1] - Math.round((rgbArr[1])*procent);
if(tmp_green >= 0 ) rgbArr[1] = tmp_green;
// канал синего
var rgb_Old_blue = rgbArr[2];
var tmp_blue = rgbArr[2] - Math.round((rgbArr[2])*procent);
if(tmp_blue >= 0 ) rgbArr[2] = tmp_blue;
var out_color_str = "rgb("+rgbArr[0]+","+rgbArr[1]+","+rgbArr[2]+")";
// выход с удалением таймера закрашивания, когда достигнут итоговый цвет
if( (rgb_Old_red == tmp_red) && (rgb_Old_green == tmp_green) && (rgb_Old_blue == tmp_blue) ){
this.el_div.Timer0 = clearInterval(this.el_div.Timer0);
alert("Finish: "+ out_color_str + " count:"+ document.count);
return;
}
el_td_0.style.backgroundColor = "#"+getHexRGBColor(out_color_str);
document.count++;
var self = this;
this.el_div.Timer1 = setTimeout(function() { self.color_to_black1() }, 250);
this.el_div.Timer2 = setTimeout(function() { self.color_to_black2() }, 500);
} // end function Pred_color_to_black0()
// для следующей ячейки
function Pred_color_to_black1(){
this.td_arr[1].style.backgroundColor = this.td_arr[0].style.backgroundColor;
} // end function Pred_color_to_black1()
// для крайней ячейки
function Pred_color_to_black2(){
this.td_arr[2].style.backgroundColor = this.td_arr[0].style.backgroundColor;
} // end function Pred_color_to_black1()
// END предфункции...
//****//
//*********************************************************************
// функция создания объекта и слоя для предзагрузки и запуска поцесса "закрашивания" (анимирование)
function create_div_loader(div_top,div_left){
var tmp_body_arr = document.getElementsByTagName("BODY");
var el_body = tmp_body_arr[0];
// ПРАДЕД!!!!
var el_praded = document.getElementById('preload_container');
this.el_div = document.createElement("DIV");
// присваиваем характеристики
this.el_div.id = "div_loading_"+1;
this.el_div.className = "div_loading";
this.el_div.style.left = div_left+"px";
this.el_div.style.top = div_top+"px";
this.el_div.style.zIndex = el_praded.style.zIndex + 10;
this.el_div.innerHTML = el_praded.innerHTML;
// прописываем в теле....
el_body.appendChild(this.el_div);
// прописываем прозрачность
setElementOpacity(this.el_div.firstChild, 0.67)
} // end function create_div_loader(div_left,div_top)
//*********************************************************************
// обработка клика на маленькой картинке и запуск показа большой
function click_to_img(e){
if (!e) e = event || window.event;
// для разных браузеров - целевой объект клика
var target_img = e.target || e.srcElement;
// определяем "номер" картинки
for(var i=0; i= 1){
big_img.big_opacity = 1;
setElementOpacity(big_img, big_img.big_opacity);
big_img.Timer_opacity = clearInterval(big_img.Timer_opacity);
return;
}
big_img.big_opacity = new_opacity;
setElementOpacity(big_img, big_img.big_opacity);
} // end function Pred_grn_fade_opacity()
//*********************************************************************
// удаление большой картинки
function Pred_remove_big_img(){
// прописываем удаление прозрачности (для большой картинки)
this.remove_opacity = Pred_remove_opacity;
var self_big_opacity = this;
this.Timer_remove_opacity = setInterval(function() { self_big_opacity.remove_opacity() },35);
}
function Pred_remove_opacity(){
var big_img = this;
var curr_opacity = big_img.big_opacity;
var procent = big_img.procent_opacity;
var new_opacity = curr_opacity - procent*2;
// краевой момент
if(new_opacity <= 0.1){
big_img.big_opacity = 0;
big_img.Timer_remove_opacity = clearInterval(big_img.Timer_remove_opacity);
// удаляем большую картинку
big_img.parentNode.removeChild(big_img);
//delete this;
return;
}
big_img.big_opacity = new_opacity;
setElementOpacity(big_img, big_img.big_opacity);
} // End function Pred_remove_opacity()
//*********************************************************************
// позиционирование большой картинки (по правому нижнему углу маленькой, при условии, что она влезет в экран)
function Pred_set_big_position(){
var big_img = this.big_img;
var img_elem = this.img_elem;
var flag_position = "br";
// если есть clicked_koord (возникает, когда картинка вызывается через функцию click_to_load_img - не через таблицу маленьких картинок),
// то берем данные width и height оттуда
if(img_elem.clicked_koord){
img_elem.width = img_elem.clicked_koord.width;
img_elem.height = img_elem.clicked_koord.height;
flag_position = img_elem.clicked_koord.flag_position;
}
switch(flag_position){
case 'br':
// bd - bottom, right
// ставим правый край
var right = parseInt(img_elem.style.left) + img_elem.width;
if( right > big_img.width){big_img.style.left = (right - big_img.width)+"px";}
// ставим нижний край
var bottom = parseInt(img_elem.style.top) + img_elem.height;
if( bottom > big_img.height){big_img.style.top = (bottom - big_img.height)+"px";}
break;
case 'tr':
// tr - top, right
// ставим правый край
var right = parseInt(img_elem.style.left) + img_elem.width;
if( right > big_img.width){big_img.style.left = (right - big_img.width)+"px";}
// ставим нижний край
var bottom = parseInt(img_elem.style.top);
if( bottom > big_img.height){big_img.style.top = (bottom - big_img.height)+"px";}
break;
} // end switch(flag_position)
}// end function Pred_set_big_position()
//*********************************************************************
// получение имени большой картинки
function get_name_big_img(in_str){
var reg_jpg = /(\.jpg.*)$/;
if(in_str.match(reg_jpg)){
in_str = in_str.replace(reg_jpg,'_big$1');
return in_str;
}
return false;
} // end function get_name_big_img(in_str)
// END блок функций создания/проявления/удаления объекта - большой картинки
//*********************************************************************
//*********************************************************************
//*********************************************************************
// УДАЛЕНИЕ ОБЪЕКТОВ
//*********************************************************************
// удаление объекта-предзагрузчика
function remove_obj_preload(){
// доступ к объекту - "родителю" вызвавшего данный метод объекта
var parent_obj_preload = this.self;
// удаляем картинку-призрак (если есть)
if(parent_obj_preload.img_elem){
//1. с экрана (стучимся к BODY, потомком которого является img_elem)
parent_obj_preload.img_elem.parentNode.removeChild(parent_obj_preload.img_elem);
// 2 из памяти (из объекта parent_obj_preload)
delete parent_obj_preload.img_elem;
}
// удаляем слой предзагрузки
if(parent_obj_preload.el_div) {remove_div_preload(parent_obj_preload.el_div);}
} // end function remove_obj_preload()
//******************
// удаление ТОЛЬКО слоя-презагрузчика
function remove_div_preload(div_obj){
// останавливаем и удаляем (через присвоение неопределенного значения) таймеры закраски
if(div_obj.Timer0){
div_obj.Timer0 = window.clearInterval(div_obj.Timer0);
div_obj.Timer1 = clearTimeout(div_obj.Timer1);
div_obj.Timer2 = clearTimeout(div_obj.Timer2);
}
// удаляем слой предзагрузки
//1. с экрана (стучимся к BODY, потомком которого является el_div)
div_obj.parentNode.removeChild(div_obj);
// 2 из памяти (из объекта parent_obj_preload)
delete div_obj;
} // end function remove_div_preload(div_obj)
//*********************************************************************