Немного подчистил код, сразу говорю я нуб поэтому просто убрал те блоки которые никак не влияют, если есть у кого желание можете подредактировать оставшиеся блоки )) <style type="text/css" /> /* message box*/ .popup_transparent_bg { top:0; left:0; width: 100%; height: 100%; position: absolute; background-color: #FFF; filter:alpha(opacity=0); opacity:0.0; z-index: 1000; } .box_frame{ left: 50%; position: absolute; } .popup_box_bg { } .popup_box_container { position: absolute; left: 50%; z-index: 1001; padding: 10px; } .message_box { background-color: none; /*filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='./../images/transpx2.png',sizingMethod='scale'); */ background: url('./../images/transpx2.png'); } .box_loader { height: 50px; background: url('/../images/progress7.gif') center no-repeat; } .box_title_wrap { background-color: #4B769F; border: 1px solid #45688E; padding: 0px; color: #fff; font-size: 13px; font-weight: bold; } .box_body { background-color: #fff; border: 1px solid #aaa; border-width: 0px 1px 0px 1px; border-bottom: 1px solid #ccc; padding:16px 14px; line-height: 14px; } .box_controls { text-align: center; padding:5px; height: 30px; background-color:#f2f2f2; border: 1px solid #aaa; border-top: 0px; } .box_controls .button_wrap { margin: 2px 5px; cursor: pointer; float: right; width: auto; height: auto; } .box_controls .button_wrap div { padding: 4px 14px; } .box_controls .button_yes { border: 1px solid #2B587A; } .box_controls .button_yes div { border-top: 1px solid #6E97C4; background-color:#4B769F; color: #FFF; } .box_controls .button_yes div.button_hover { background-color: #678BAE; } .box_controls .button_no { border: 1px solid #ccc; } .box_controls .button_no div { border-top: 1px solid #fff; background-color:#eaeaea; color: #000; text-decoration: none; } .box_controls .button_no div.button_hover { background-color: #f5f5f5; } .box_title { border-top: 1px solid #6088B3; padding: 4px 10px 5px 10px; } .box_no_controls { background-color: #DAE2E8; border: 1px solid #ADBBCA; } .box_no_controls .box_title_wrap, .box_no_controls .box_layout .box_controls { display: none; } .box_no_controls .box_body { border: none; padding: 0; } </style> <script type="text/javascript"> var base_domain = base_domain || "/"; var browser = { opera: /opera/i.test(navigator.userAgent), msie: (!this.opera && /msie/i.test(navigator.userAgent)), msie6: (!this.opera && /msie 6/i.test(navigator.userAgent)), mozilla: /firefox/i.test(navigator.userAgent), chrome: /chrome/i.test(navigator.userAgent), safari: (!(/chrome/i.test(navigator.userAgent)) && /webkit|safari|khtml/i.test(navigator.userAgent)) } /** * DOM **/ function ge() { var ea; for (var i = 0; i < arguments.length; i++) { var e = arguments[i]; if (typeof e == 'string') e = document.getElementById(e); if (arguments.length == 1) return e; if (!ea) ea = new Array(); ea.push(e); } return ea; } function geByClass(searchClass, node, tag) { var classElements = new Array(); if ( node == null ) node = document; if ( tag == null ) tag = '*'; if (node.getElementsByClassName) { classElements = node.getElementsByClassName(searchClass); if (tag != '*') { for (i = 0; i < classElements.length; i++) { if (classElements.nodeName == tag) classElements.splice(i, 1); } } return classElements; } var els = node.getElementsByTagName(tag); var elsLen = els.length; var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)"); for (i = 0, j = 0; i < elsLen; i++) { if ( pattern.test(els[i].className) ) { classElements[j] = els[i]; j++; } } return classElements; } function show(elem) { if (arguments.length > 1) { for (var i = 0; i < arguments.length; i++) { show(arguments[i]); } return; } elem = ge(elem); if (!elem) return; var old = data(elem, "olddisplay"); elem.style.display = old || ""; if (getStyle(elem, 'display') == "none" ) { elem.style.display = data(elem, "olddisplay", "block"); } } function hide(elem){ if (arguments.length > 1) { for (var i = 0; i < arguments.length; i++) { hide(arguments[i]); } return; } elem = ge(elem); if (!elem) return; if (getStyle(elem, 'display') != "none") data(elem, "olddisplay", elem.style.display); elem.style.display = "none"; } function isVisible(elem) { elem = ge(elem); return getStyle(elem, 'display') != 'none' && getStyle(elem, 'visibility') != 'hidden'; } function toggle(elem) { if (isVisible(elem)) { hide(elem); } else { show(elem); } } window.shide = toggle; function getXY(obj) { if (!obj || obj == undefined) return; var left = 0, top = 0; if (obj.offsetParent) { do { left += obj.offsetLeft; top += obj.offsetTop; } while (obj = obj.offsetParent); } return [left,top]; } function getSize(elem, woBounds) { var s = [0, 0]; if (elem == document) { s = [Math.max( document.documentElement["clientWidth"], document.body["scrollWidth"], document.documentElement["scrollWidth"], document.body["offsetWidth"], document.documentElement["offsetWidth"] ), Math.max( document.documentElement["clientHeight"], document.body["scrollHeight"], document.documentElement["scrollHeight"], document.body["offsetHeight"], document.documentElement["offsetHeight"] )]; } else if (elem){ function getWH() { s = [elem.offsetWidth, elem.offsetHeight]; if (!woBounds) return; var padding = 0, border = 0; each(s, function(i, v) { var which = i ? ['Top', 'Bottom'] : ['Left', 'Right']; each(which, function(){ s[i] -= parseFloat(getStyle(elem, "padding" + this)) || 0; s[i] -= parseFloat(getStyle(elem, "border" + this + "Width")) || 0; }); }); s = [Math.round(s[0]), Math.round(s[1])]; } if (!isVisible(elem)) { var props = {position: "absolute", visibility: "hidden", display:"block"}; var old = {}; each(props, function(i, val){ old[i] = elem.style[i]; elem.style[i] = val; }); getWH(); each(props, function(i, val){ elem.style[i] = old[i]; }); } else getWH(); } return s; } /** * *************************************************** */ /** * Useful utils */ Function.prototype.bind = function(object) { var __method = this; return function() { return __method.apply(object, arguments); } }; function isFunction(obj) { return Object.prototype.toString.call(obj) === "[object Function]"; } function isArray(obj) { return Object.prototype.toString.call(obj) === "[object Array]"; } function now() { return +new Date; } function trim(text) { return (text || "").replace(/^\s+|\s+$/g, ""); } /** * Arrays, objects **/ function each(object, callback) { var name, i = 0, length = object.length; if ( length === undefined ) { for ( name in object ) if ( callback.call( object[ name ], name, object[ name ] ) === false ) break; } else for ( var value = object[0]; i < length && callback.call( value, i, value ) !== false; value = object[++i] ){} return object; }; function indexOf(arr, value, from) { from = (from == null) ? 0 : from; var m = arr.length; for(var i = from; i < m; i++) if (arr[i] == value) return i; return -1; } function clone(obj) { var newObj = {}; for (var i in obj) { newObj[i] = obj[i]; } return newObj; } // Extending object by another function extend() { // copy reference to target object var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; // Handle a deep copy situation if (typeof target === "boolean") { deep = target; target = arguments[1] || {}; // skip the boolean and the target i = 2; } // Handle case when target is a string or something (possible in deep copy) if (typeof target !== "object" && !isFunction(target)) target = {}; // return target object if only one argument is passed if (length == i) { return target; } for (; i < length; i++) // Only deal with non-null/undefined values if ((options = arguments[i]) != null) // Extend the base object for (var name in options) { var src = target[name], copy = options[name]; // Prevent never-ending loop if (target === copy) continue; // Recurse if we're merging object values if (deep && copy && typeof copy === "object" && !copy.nodeType) target[name] = extend(deep, // Never move original objects, clone them src || (copy.length != null ? [] : { }) , copy); // Don't bring in undefined values else if (copy !== undefined) target[name] = copy; } // Return the modified object return target; } /** * CSS classes **/ function hasClass(obj, name) { return obj && (new RegExp('(\\s|^)' + name + '(\\s|$)')).test(obj.className); } function addClass(obj, name) { if (obj && !hasClass(obj, name)) obj.className = (obj.className ? obj.className + ' ' : '') + name; } function removeClass(obj, name) { if (obj && hasClass(obj, name)) { obj.className = obj.className.replace((new RegExp('(\\s|^)' + name + '(\\s|$)')), ' '); } } // Get computed style function getStyle(elem, name) { if (name == "width" || name == "height") { return getSize(elem, true)[({'width':0, 'height':1})[name]] + 'px'; } var ret, defaultView = document.defaultView || window; if (defaultView.getComputedStyle) { name = name.replace( /([A-Z])/g, "-$1" ).toLowerCase(); var computedStyle = defaultView.getComputedStyle( elem, null ); if (computedStyle) ret = computedStyle.getPropertyValue(name); } else if (elem.currentStyle) { if (name == 'opacity' && browser.msie) { var filter = elem.currentStyle['filter']; return filter && filter.indexOf("opacity=") >= 0 ? (parseFloat(filter.match(/opacity=([^)]*)/)[1] ) / 100) + '' : '1'; } var camelCase = name.replace(/\-(\w)/g, function(all, letter){ return letter.toUpperCase(); }); ret = elem.currentStyle[name] || elem.currentStyle[camelCase]; // If we're not dealing with a regular pixel number // but a number that has a weird ending, we need to convert it to pixels if ( !/^\d+(px)?$/i.test( ret ) && /^\d/.test( ret ) ) { // Remember the original values var left = style.left, rsLeft = elem.runtimeStyle.left; // Put in the new values to get a computed value out elem.runtimeStyle.left = elem.currentStyle.left; style.left = ret || 0; ret = style.pixelLeft + "px"; // Revert the changed values style.left = left; elem.runtimeStyle.left = rsLeft; } } return ret; } function setStyle(elem, name, value){ elem = ge(elem); if (name == 'opacity'){ if (browser.msie) {elem.style.filter = "alpha(opacity=" + value*100 + ")"; elem.style.zoom = 1; }; elem.style.opacity = value; } else elem.style[name] = typeof(value) == 'number' && !(/z-?index|font-?weight|opacity|zoom|line-?height/i).test(name) ? value + 'px': value; } /** * Store data connected to element **/ var expand = "VK" + now(), vk_uuid = 0, vk_cache = {}; // Get or set element data function data(elem, name, data) { var id = elem[ expand ], undefined; if ( !id ) id = elem[ expand ] = ++vk_uuid; if (name && !vk_cache[id]) vk_cache[id] = {}; if (data !== undefined) vk_cache[id][name] = data; return name ? vk_cache[id][name] : id; } function removeData(elem, name) { var id = elem[expand]; if (name) { if (vk_cache[id]) { delete vk_cache[id][name]; name = ""; for (name in vk_cache[id]) break; if (!name) removeData(elem); } } else { try { delete elem[expand]; } catch(e){ // fix for IE if (elem.removeAttribute) elem.removeAttribute(expand); } delete vk_cache[id]; } } /** * Events **/ var KEY = window.KEY = { LEFT: 37, UP: 38, RIGHT: 39, DOWN: 40, DEL: 8, TAB: 9, RETURN: 13, ESC: 27, PAGEUP: 33, PAGEDOWN: 34, SPACE: 32 }; function addEvent(elem, types, handler) { if (!elem || elem.nodeType == 3 || elem.nodeType == 8 ) return; // For whatever reason, IE has trouble passing the window object // around, causing it to be cloned in the process if (elem.setInterval && elem != window) elem = window; var events = data(elem, "events") || data(elem, "events", []), handle = data(elem, "handle") || data(elem, "handle", function(){ _eventHandle.apply(arguments.callee.elem, arguments); }); // Add elem as a property of the handle function // This is to prevent a memory leak with non-native // event in IE. handle.elem = elem; each(types.split(/\s+/), function(index, type) { var handlers = events[type]; if (!handlers) { handlers = events[type] = new Array(); if (elem.addEventListener) elem.addEventListener(type, handle, false); else if (elem.attachEvent) elem.attachEvent('on' + type, handle); } handlers.push(handler); }); elem = null; } function removeEvent(elem, type, handler) { if (!elem) return; var events = data(elem, "events"); if (events) { if (typeof(type) == 'string' && isArray(events[type])) { if (isFunction(handler)) { for (var i = 0; i < events[type].length; i++) { if (events[type][i] == handler) { delete events[type][i]; break; } } } else { for (var i = 0; i < events[type].length; i++) { delete events[type][i]; } } } else { for (var i in events) { removeEvent(elem, i); } return; } for (var ret in events[type]) break; if (!ret && data(elem, "handle")) { if (elem.removeEventListener) elem.removeEventListener(type, data(elem, "handle"), false); else if (elem.detachEvent) elem.detachEvent("on" + type, data(elem, "handle")); } ret = null; delete events[type]; } } function cancelEvent(event) { var e = event.originalEvent || event; if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); e.cancelBubble = true; e.returnValue = false; return false; } function _eventHandle(event) { event = event || window.event; var originalEvent = event; event = clone(originalEvent); event.originalEvent = originalEvent; if (!event.target) event.target = event.srcElement || document; // check if target is a textnode (safari) if ( event.target.nodeType == 3 ) event.target = event.target.parentNode; if (!event.relatedTarget && event.fromElement) event.relatedTarget = event.fromElement == event.target if ( event.pageX == null && event.clientX != null ) { var doc = document.documentElement, body = document.body; event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc.clientLeft || 0); event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc.clientTop || 0); } if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) event.which = event.charCode || event.keyCode; // Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs) if ( !event.metaKey && event.ctrlKey ) event.metaKey = event.ctrlKey; // Add which for click: 1 == left; 2 == middle; 3 == right // Note: button is not normalized, so don't use it if ( !event.which && event.button ) event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) )); var handlers = data(this, "events"); if (!handlers || typeof(event.type) != 'string' || !handlers[event.type] || !handlers[event.type].length) { return; } try { for (var i = 0; i < handlers[event.type].length; i++) { if (event.type == 'mouseover' || event.type == 'mouseout') { var parent = event.relatedElement; // Traverse up the tree while ( parent && parent != this ) try { parent = parent.parentNode; } catch(e) { parent = this; } if (parent == this) { continue } } var ret = handlers[event.type][i].apply(this, arguments); if (ret === false) { cancelEvent(event); } } } catch (e) { var a = 0; } } // Prevent memory leaks in IE // And prevent errors on refresh with events like mouseover in other browsers // Window isn't included so as not to unbind existing unload events addEvent(window, "unload", function(){ for (var id in vk_cache) if (vk_cache[id].handle && vk_cache[id].handle.elem != window) removeEvent(vk_cache[id].handle.elem); }); // Dom ready event handler (function(){ var isRdy = false, rdyBnd = false, rdyList = []; window.onDomReady = function(fn) { bindRdy(); if (isRdy){ fn.call(document); } else { rdyList.push(function() { fn.call(document); }); } }; var rdy = function() { if (!isRdy) { isRdy = true; if (rdyList) { var l = rdyList; l.reverse(); while (fn = l.pop()) { fn.apply(document); } rdyList = null; } } }; var bindRdy = function() { if (rdyBnd) return; rdyBnd = true; if(document.addEventListener && !browser.opera) document.addEventListener("DOMContentLoaded", rdy, false); if (browser.msie && window == top) (function(){ if (isRdy) return; try {document.documentElement.doScroll("left"); } catch (e) { setTimeout(arguments.callee,0); return; } rdy(); })(); if (browser.opera) document.addEventListener("DOMContentLoaded", function(){ if (isRdy) return; rdy(); }, false); if (browser.safari) { (function(){ if(isRdy) return; if (document.readyState != "loaded" && document.readyState != "complete") { setTimeout(arguments.callee,0); return; } rdy(); })(); } addEvent(window, "load", rdy); } })(); var ajaxHistory = $ah = new (function(){ var _t = this; var curHash = ""; var curHashes = {}; var frame = null; var forceLoad = false; var order = null; _t.frameLoading = false; _t.enabled = false; _t.useCache = true; _t.onLoad = {}; _t.cache = {}; var setHash = function(hash){ hash = hash.replace("#",""); if(location.hash != "#" + hash){ location.hash = "#" + hash; if(browser.msie){ frame.src = 'blank.html?ahHash='+encodeURIComponent(hash); _t.frameLoading = true; } } return true; }; var getHash = function(){ if(!browser.msie)return location.hash.replace("#",""); try{ var hash = ge('ahFrame').contentWindow.document.location.search.match(/ahHash=(.*)$/); return decodeURIComponent((hash && hash[1]) || "").replace("#",""); }catch(e){return curHash;} }; var splitHash = function(hash){ if(!hash)return {}; hash = hash.split("/"); if(hash.length == 1){ if(!_t.onLoad['default'])return {}; if(_t.onLoad['default'].show)hash[0] = _t.onLoad['default'].show.from(hash[0]); return {'default':sortParams(hash[0])}; } var parsed = {}; for(var i=0;i<hash.length;i+=2){ var h = hash[i];var p = hash[i+1]; if(_t.onLoad[h].show){p = sortParams(_t.onLoad[h].show.from(p));} else{ p = sortParams(p); if(!p && _t.onLoad[h])p = sortParams(_t.onLoad[h].def); } parsed[h] = p; } return parsed; }; var joinHash = function(hash){ var joined = []; var def = true; for(var i in hash){ def = def && (i=='default'); var p = sortParams(hash[i]); if(_t.onLoad[i].show){ var p1 = _t.onLoad[i].show.to(splitParams(hash[i])); if(p1)p = p1; } joined.push(i + "/" + p); } if(def && joined[0])return joined[0].split("/")[1]; return joined.sort().join("/"); }; var splitParams = function(params){ if(!params)return {}; if(typeof(params)!='string')return params; if(!/&|=/.test(params))return params; var vals = params.split("&"); var p = {}; for(var i=0;i<vals.length;i++){ var v = vals[i].split("="); p[v[0]] = v[1]; } return p; }; var sortParams = function(params){ if(typeof(params)=='number')return params+''; if(typeof(params)!='string'){ params = ajx2q(params); } return params.split("&").sort().join("&"); }; _t.init = function(){ if(!this.enabled)return; for(var i in _t.onLoad){ var p = sortParams(_t.onLoad[i].def); curHashes[i] = p; }; var handler = function(){ var origHash = getHash(); if(origHash==curHash && !forceLoad)return; var state = splitHash(origHash); var hash = joinHash(state); if(hash!=curHash || forceLoad){ var ordered = order || _t.onLoad; for(var i in ordered){ if(order)i = ordered[i]; var l = _t.onLoad[i]; var p = state[i] || sortParams(l.def); if(p!=curHashes[i] || i == forceLoad){ forceLoad = false; if(l.before && !l.before(splitParams(p))){ curHashes[i] = p; continue; } if(!_t.cache[i])_t.cache[i] = {}; if(!_t.useCache || !_t.cache[i][p]){ _t.getData(l,i,p,hash); }else if(l.done){ l.done({}, _t.cache[i][p]); } curHashes[i] = p; } } curHash = hash; if(browser.msie){ if(location.hash != "#" + hash)location.hash = "#" + hash; } } }; if(browser.msie){ var initHash = encodeURIComponent(location.hash); document.body.innerHTML += "<iframe id='ahFrame' style='position:absolute;left:-1000px;width:0;height:0' src='/blank.html?ahHash="+initHash+"'></iframe>"; frame = ge('ahFrame'); frame.attachEvent('onreadystatechange', function() { if(frame.contentWindow.document.readyState == 'complete'){ _t.frameLoading = false; handler(); } }, false); frame.attachEvent('onload', function() { if(_t.frameLoading){ _t.frameLoading = false; handler(); } }, false); setInterval(function(){ if(!_t.frameLoading && (location.hash.replace("#", "") != getHash())){ setHash(location.hash); } }, 200); }else{ setInterval(handler,150); } }; _t.go = function(s, params){ if(params===undefined){params = s; s = 'default';} var state = splitHash(curHash); state[s] = sortParams(params); var hash = joinHash(state); setHash(hash); forceLoad = s; }; _t.getData = function(loadObj, id, params, hash){ var a = new Ajax( (function(l,i,p,t){return function(res,text){ if(l.done)l.done(res,text); if(t.useCache)_t.cache[i][p] = text; t.frameLoading = false; };})(loadObj,id,params, _t), (function(l,i,p,t){return function(res,text){ if(l.fail)l.fail(res,text); t.frameLoading = false; };})(loadObj,id,params, _t), true); a.post(loadObj.url, params); }; _t.prepare = function(id, params){ _t.enabled = true; if(params===undefined){params = id; id = 'default';} _t.onLoad[id] = params; }; _t.validateHash = function(hash){return joinHash(splitHash(hash));}; _t.clearCache = function(id){_t.cache[id] = {}}; })(); onDomReady(function(){ajaxHistory.init()}); /** * Message box **/ var _message_box_guid = 0, _message_boxes = [], _message_box_shown = false, _show_flash_timeout; function MessageBox(options) { var defaults = { type: "MESSAGE", // "MESSAGE" || "POPUP" hideOnClick: true, title: "Alert", width: "410px", height: "auto", hideFlash: true }; options = extend(defaults, options); var buttonsCount = 0, body = document.getElementsByTagName('body')[0], transparentBG, boxContainer, boxBG, boxContainer, boxLayout, boxTitle, boxBody, boxControls, buttonYes, buttonNo, guid = _message_box_guid++, isVisible = false; transparentBG = document.createElement('div'); transparentBG.className = 'popup_transparent_bg'; hide(transparentBG); //boxBG = document.createElement('div'); //boxBG.className = 'popup_box_bg'; //hide(boxBG); transparentBG.innerHTML = '<iframe class="box_frame"></iframe>'; boxContainer = document.createElement('div'); boxContainer.className = 'popup_box_container'; hide(boxContainer); boxContainer.innerHTML = '<div class="box_layout"><div class="box_title_wrap"><div class="box_title"></div></div><div class="box_body"></div><div class="box_controls"></div></div>'; boxFrame = geByClass('box_frame', transparentBG)[0]; boxLayout = geByClass('box_layout', boxContainer)[0]; boxTitle = geByClass('box_title', boxContainer)[0]; boxBody = geByClass('box_body', boxContainer)[0]; boxControls = geByClass('box_controls', boxContainer)[0]; transparentBG.style.height = getSize(document)[1] + 'px'; addEvent(document, 'keydown', function(e) { if (e.keyCode == 27) { hideBox(); } }); onDomReady(function() { body.appendChild(transparentBG); body.appendChild(boxContainer); refreshCoords(); refreshBox(); }); // Refresh box position function refreshCoords() { var height = window.innerHeight ? window.innerHeight : (document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.offsetHeight); containerSize = getSize(boxContainer); boxFrame.style.top = boxContainer.style.top = Math.max(document.documentElement.scrollTop, body.scrollTop) + (height - containerSize[1]) / 3 + 'px'; boxFrame.style.marginLeft = boxContainer.style.marginLeft = - containerSize[0] / 2 + 'px'; setStyle(boxFrame, 'width', containerSize[0]); setStyle(boxFrame, 'height', containerSize[1]); } // Add button function addButton(options) { buttonsCount++; if (typeof options != 'object') options = {}; options = extend({ label: 'Button' + buttonsCount, style: 'button_yes' }, options); var buttonWrap = document.createElement('div'); buttonWrap.className = "button_wrap " + options.style; buttonWrap.innerHTML = '<div class="box_button" id="button' + guid + '_' + buttonsCount + '">' + options.label + '</div>'; boxControls.appendChild(buttonWrap); addEvent(buttonWrap, 'mouseover', function() { addClass(this.firstChild, 'button_hover'); }); addEvent(buttonWrap, 'mouseout', function() { removeClass(this.firstChild, 'button_hover'); }); if (isFunction(options.onClick)) { addEvent(buttonWrap, 'click', options.onClick); } return buttonWrap; } // Remove buttons function removeButtons() { buttonsCount = 0; boxControls.innerHTML = ''; } // Refresh box properties function refreshBox() { // Set title boxTitle.innerHTML = options.title; // Set box dimensions boxContainer.style.width = typeof(options.width) == 'string' ? options.width : options.width + 'px'; boxContainer.style.height = typeof(options.height) == 'string' ? options.height : options.height + 'px'; // Switch box type removeClass(boxContainer, 'box_no_controls'); removeClass(boxContainer, 'message_box'); removeEvent(boxContainer, 'click'); if (options.hideOnClick && options.type == 'POPUP') { addEvent(boxContainer, 'click', function(){ hideBox(); }); } switch (options.type) { case 'POPUP': addClass(boxContainer, 'box_no_controls'); addEvent(transparentBG, 'click', function(){ hideBox(); }); break; case 'MESSAGE': addClass(boxContainer, 'message_box'); removeEvent(transparentBG, 'click'); break; } } // Show box function showBox() { if (isVisible) return; isVisible = true; each(_message_boxes, function(box_guid, box) { if (box_guid != guid) box.hide(); }); // Show blocking background show(transparentBG); // Show box // fadeIn(boxContainer, 200); show(boxContainer); // AntanubiS - Video wall posting fails with fadeIn =( refreshCoords(); // Hide all flash movies on the page if (options.hideFlash) { clearTimeout(_show_flash_timeout); each(body.getElementsByTagName('embed'), function(i, el) { el.style.visibility = 'hidden'; }); each(body.getElementsByTagName('object'), function(i, el) { el.style.visibility = 'hidden'; }); } if (options.onShow) { options.onShow(); } } // Hide box function hideBox(speed) { if (!isVisible) return; isVisible = false; var onHide = function () { hide(boxContainer); hide(transparentBG); // Show all flash movies on the page if (options.hideFlash) { if (_show_flash_timeout) clearTimeout(_show_flash_timeout); _show_flash_timeout = setTimeout(function() { each(body.getElementsByTagName('embed'), function(i, el) { el.style.visibility = 'visible'; }); each(body.getElementsByTagName('object'), function(i, el) { el.style.visibility = 'visible'; }); }, 50); } if (options.onHide) options.onHide(); } if (speed > 0) { fadeOut(boxContainer, speed, function(){ onHide(); }); } else { onHide(); } } var retBox = { guid: guid, // Show box show: function(speed) { showBox(speed); return this; }, // Hide box hide: function(speed) { hideBox(speed); return this; }, isVisible: function() { return this.isVisible; }, // Insert html content into the box content: function(html) { boxBody.innerHTML = html; refreshCoords(); return this; }, // Load html content from URL loadContent: function(url, params) { var ajax = new Ajax(function(ajaxObj, responseText) { boxBody.innerHTML = responseText; refreshCoords(); if (options.onLoad) options.onLoad(responseText); }, function(ajaxObj, responseText) { boxBody.innerHTML = 'Request error occured.'; if (options.onLoadError) options.onLoadError(responseText); }); // Show loader boxBody.innerHTML = '<div class="box_loader"></div>'; // Load remote html using get request if (typeof params != 'object') params = {}; ajax.post(url, params); return this; }, // Add button addButton: function(options) { addButton(options); return this; }, // Remove buttons removeButtons: function(options) { removeButtons(); return this; }, // Update box options setOptions: function(newOptions) { options = extend(options, newOptions); refreshBox(); return this; } }; _message_boxes[guid] = retBox; return retBox; }; </script> <script type="text/javascript"> var photoBox; function showPhoto(url, photo_id) { pic = new Image(); pic.src = url; if (!pic.width) { var coords = durovGetXY(ge('photo'+photo_id)); ge('imageProgress').style.height = ge('photo'+photo_id).offsetHeight+"px"; ge('imageProgress').style.left = coords[0]+"px"; ge('imageProgress').style.top = coords[1]+"px"; show('imageProgress'); setTimeout("showPhoto('"+url+"')", 1500); return false; } if (!photoBox) photoBox = new MessageBox({type: 'POPUP', width: 'auto'}); photoBox.content('<img src="' + url + '" />').show(); hide('imageProgress'); return false; } </script> <div class="photos"><a href="#" id="photo2093433" onclick="showPhoto('http://img196.imageshack.us/img196/415/32699664.jpg', 2093433); return false;" class="imageLink"><img src="http://img196.imageshack.us/img196/415/32699664.th.jpg"></a></div>