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