diff -r de56132c008d -r bdac73ed481e includes/clientside/static/dropdown.js --- a/includes/clientside/static/dropdown.js Sun Mar 28 21:49:26 2010 -0400 +++ b/includes/clientside/static/dropdown.js Sun Mar 28 23:10:46 2010 -0400 @@ -34,221 +34,221 @@ // Adds the jBox CSS to the HTML header. Called on window onload. var jBoxInit = function() { - setTimeout('jBoxBatchSetup();', 200); + setTimeout('jBoxBatchSetup();', 200); } addOnloadHook(jBoxInit); // Initializes each menu. function jBoxBatchSetup() { - if ( KILL_SWITCH ) - return false; - var menus = document.getElementsByClassName('div', 'menu_nojs'); - if ( menus.length > 0 ) - { - for ( var i in menus ) - { - if ( typeof(menus[i]) != 'object') - continue; // toJSONString() compatibility - jBoxSetup(menus[i]); - } - } + if ( KILL_SWITCH ) + return false; + var menus = document.getElementsByClassName('div', 'menu_nojs'); + if ( menus.length > 0 ) + { + for ( var i in menus ) + { + if ( typeof(menus[i]) != 'object') + continue; // toJSONString() compatibility + jBoxSetup(menus[i]); + } + } } // Initializes a div with a jBox menu in it. function jBoxSetup(obj) { - $dynano(obj).addClass('menu'); - removeTextNodes(obj); - - for ( var i = 0; i < obj.childNodes.length; i++ ) - { - /* normally this would be done in about 2 lines of code, but javascript is so picky..... */ - if ( obj.childNodes[i] ) - { - if ( obj.childNodes[i].tagName ) - { - if ( obj.childNodes[i].tagName == 'A' ) - { - // if ( is_Safari ) alert('It\'s an A: '+obj); - if ( obj.childNodes[i].nextSibling ) - { - // alert("Next sibling: " + obj.childNodes[i].nextSibling); - if ( obj.childNodes[i].nextSibling.tagName ) - { - if ( obj.childNodes[i].nextSibling.tagName == 'UL' || ( obj.childNodes[i].nextSibling.tagName.toLowerCase() == 'div' && obj.childNodes[i].nextSibling.className == 'submenu' ) ) - { - // Calculate height - var ul = obj.childNodes[i].nextSibling; - domObjChangeOpac(0, ul); - ul.style.display = 'block'; - ul.style.zIndex = getHighestZ() + 2; - var links = ul.getElementsByTagName('a'); - for ( var j = 0; j < links.length; j++ ) - { - links[j].onmouseup = function() - { - var ul = this; - while ( ul.tagName != 'UL' && ul.tagName != 'DIV' && ul.tagName != 'BODY' ) - ul = ul.parentNode; - if ( ul.tagName == 'BODY' ) - return false; - jBoxHideMenu(ul.previousSibling, ul); - } - } - var dim = fetch_dimensions(ul); - if ( !ul.id ) - ul.id = 'jBoxmenuobj_' + Math.floor(Math.random() * 10000000); - jBoxMenuHeights[ul.id] = parseInt(dim['h']) - 2; // subtract 2px for border width - - if ( dim['w'] + $dynano(ul).Left() > getWidth() || $dynano(ul).hasClass('jbox_right') ) - { - $dynano(ul).addClass('jbox_right'); - ul.jbox_width = $dynano(ul).Width(); - } - - ul.style.display = 'none'; - domObjChangeOpac(100, ul); - - // Setup events - obj.childNodes[i].onmouseover = function() { jBoxOverHandler(this); }; - obj.childNodes[i].onmouseout = function(e) { jBoxOutHandler(this, e); }; - obj.childNodes[i].nextSibling.onmouseout = function(e) { jBoxOutHandler(this, e); }; - if ( is_iPhone ) - { - obj.childNodes[i].onclick = function() { jBoxOverHandler(this); return false; }; - } - } - } - } - } - } - } - } + $dynano(obj).addClass('menu'); + removeTextNodes(obj); + + for ( var i = 0; i < obj.childNodes.length; i++ ) + { + /* normally this would be done in about 2 lines of code, but javascript is so picky..... */ + if ( obj.childNodes[i] ) + { + if ( obj.childNodes[i].tagName ) + { + if ( obj.childNodes[i].tagName == 'A' ) + { + // if ( is_Safari ) alert('It\'s an A: '+obj); + if ( obj.childNodes[i].nextSibling ) + { + // alert("Next sibling: " + obj.childNodes[i].nextSibling); + if ( obj.childNodes[i].nextSibling.tagName ) + { + if ( obj.childNodes[i].nextSibling.tagName == 'UL' || ( obj.childNodes[i].nextSibling.tagName.toLowerCase() == 'div' && obj.childNodes[i].nextSibling.className == 'submenu' ) ) + { + // Calculate height + var ul = obj.childNodes[i].nextSibling; + domObjChangeOpac(0, ul); + ul.style.display = 'block'; + ul.style.zIndex = getHighestZ() + 2; + var links = ul.getElementsByTagName('a'); + for ( var j = 0; j < links.length; j++ ) + { + links[j].onmouseup = function() + { + var ul = this; + while ( ul.tagName != 'UL' && ul.tagName != 'DIV' && ul.tagName != 'BODY' ) + ul = ul.parentNode; + if ( ul.tagName == 'BODY' ) + return false; + jBoxHideMenu(ul.previousSibling, ul); + } + } + var dim = fetch_dimensions(ul); + if ( !ul.id ) + ul.id = 'jBoxmenuobj_' + Math.floor(Math.random() * 10000000); + jBoxMenuHeights[ul.id] = parseInt(dim['h']) - 2; // subtract 2px for border width + + if ( dim['w'] + $dynano(ul).Left() > getWidth() || $dynano(ul).hasClass('jbox_right') ) + { + $dynano(ul).addClass('jbox_right'); + ul.jbox_width = $dynano(ul).Width(); + } + + ul.style.display = 'none'; + domObjChangeOpac(100, ul); + + // Setup events + obj.childNodes[i].onmouseover = function() { jBoxOverHandler(this); }; + obj.childNodes[i].onmouseout = function(e) { jBoxOutHandler(this, e); }; + obj.childNodes[i].nextSibling.onmouseout = function(e) { jBoxOutHandler(this, e); }; + if ( is_iPhone ) + { + obj.childNodes[i].onclick = function() { jBoxOverHandler(this); return false; }; + } + } + } + } + } + } + } + } } // Called when user hovers mouse over a submenu function jBoxOverHandler(obj) { - // if ( is_Safari ) - // alert('Safari and over'); - // Random ID used to track the object to perform on - var seed = Math.floor(Math.random() * 1000000); - jBoxObjCache[seed] = obj; - - // Sleep for a (little more than a tenth of a) second to see if the user really wants the menu to expand - setTimeout('if(isOverObj(jBoxObjCache['+seed+'], false, false)) jBoxOverHandlerBin(jBoxObjCache['+seed+']);', 150); + // if ( is_Safari ) + // alert('Safari and over'); + // Random ID used to track the object to perform on + var seed = Math.floor(Math.random() * 1000000); + jBoxObjCache[seed] = obj; + + // Sleep for a (little more than a tenth of a) second to see if the user really wants the menu to expand + setTimeout('if(isOverObj(jBoxObjCache['+seed+'], false, false)) jBoxOverHandlerBin(jBoxObjCache['+seed+']);', 150); } // Displays a menu. function jBoxOverHandlerBin(obj) { - var others = obj.parentNode.getElementsByTagName('ul'); - for ( var i in others ) - { - if(typeof(others[i]) == 'object') - { - others[i].style.display = 'none'; - $dynano(others[i].previousSibling).rmClass('liteselected'); - } - } - var others = obj.parentNode.getElementsByTagName('div'); - for ( var i in others ) - { - if(typeof(others[i]) == 'object') - { - if ( others[i].className == 'submenu' ) - { - others[i].style.display = 'none'; - $dynano(others[i].previousSibling).rmClass('liteselected'); - } - } - } - if(obj.nextSibling.tagName.toLowerCase() == 'ul' || ( obj.nextSibling.tagName.toLowerCase() == 'div' && obj.nextSibling.className == 'submenu' )) - { - $dynano(obj).addClass('liteselected'); - //obj.className = 'liteselected'; - var ul = obj.nextSibling; - var dim = fetch_dimensions(obj); - var off = fetch_offset(obj); - var dimh = parseInt(dim['h']); - var offtop = parseInt(off['top']); - var top = dimh + offtop; - if ( $dynano(ul).hasClass('jbox_right') ) - { - left = $dynano(obj).Left() + $dynano(obj).Width() - ul.jbox_width; // ( link left + link width ) - ul width - } - else - { - left = off['left']; - } - if ( jBox_slide_enable ) - { - domObjChangeOpac(0, ul); - } - ul.style.left = left + 'px'; - ul.style.top = top + 'px'; - ul.style.clip = 'rect(auto,auto,auto,auto)'; - ul.style.overflow = 'visible'; - ul.style.display = 'block'; - if ( jBox_slide_enable ) - { - slideOut(ul); - } - else - { - domObjChangeOpac(100, ul); - } - } + var others = obj.parentNode.getElementsByTagName('ul'); + for ( var i in others ) + { + if(typeof(others[i]) == 'object') + { + others[i].style.display = 'none'; + $dynano(others[i].previousSibling).rmClass('liteselected'); + } + } + var others = obj.parentNode.getElementsByTagName('div'); + for ( var i in others ) + { + if(typeof(others[i]) == 'object') + { + if ( others[i].className == 'submenu' ) + { + others[i].style.display = 'none'; + $dynano(others[i].previousSibling).rmClass('liteselected'); + } + } + } + if(obj.nextSibling.tagName.toLowerCase() == 'ul' || ( obj.nextSibling.tagName.toLowerCase() == 'div' && obj.nextSibling.className == 'submenu' )) + { + $dynano(obj).addClass('liteselected'); + //obj.className = 'liteselected'; + var ul = obj.nextSibling; + var dim = fetch_dimensions(obj); + var off = fetch_offset(obj); + var dimh = parseInt(dim['h']); + var offtop = parseInt(off['top']); + var top = dimh + offtop; + if ( $dynano(ul).hasClass('jbox_right') ) + { + left = $dynano(obj).Left() + $dynano(obj).Width() - ul.jbox_width; // ( link left + link width ) - ul width + } + else + { + left = off['left']; + } + if ( jBox_slide_enable ) + { + domObjChangeOpac(0, ul); + } + ul.style.left = left + 'px'; + ul.style.top = top + 'px'; + ul.style.clip = 'rect(auto,auto,auto,auto)'; + ul.style.overflow = 'visible'; + ul.style.display = 'block'; + if ( jBox_slide_enable ) + { + slideOut(ul); + } + else + { + domObjChangeOpac(100, ul); + } + } } function jBoxOutHandler(obj, event) { - var seed = Math.floor(Math.random() * 1000000); - var seed2 = Math.floor(Math.random() * 1000000); - jBoxObjCache[seed] = obj; - jBoxObjCache[seed2] = event; - setTimeout('jBoxOutHandlerBin(jBoxObjCache['+seed+'], jBoxObjCache['+seed2+']);', 750); + var seed = Math.floor(Math.random() * 1000000); + var seed2 = Math.floor(Math.random() * 1000000); + jBoxObjCache[seed] = obj; + jBoxObjCache[seed2] = event; + setTimeout('jBoxOutHandlerBin(jBoxObjCache['+seed+'], jBoxObjCache['+seed2+']);', 750); } function jBoxOutHandlerBin(obj, event) { - var caller = obj.tagName.toLowerCase(); - if(caller == 'a') - { - a = obj; - ul = obj.nextSibling; - } - else if(caller == 'ul' || caller == 'div') - { - a = obj.previousSibling; - ul = obj; - } - else - { - return false; - } - - if (!isOverObj(a, false, event) && !isOverObj(ul, true, event)) - { - jBoxHideMenu(a, ul); - } - - return true; + var caller = obj.tagName.toLowerCase(); + if(caller == 'a') + { + a = obj; + ul = obj.nextSibling; + } + else if(caller == 'ul' || caller == 'div') + { + a = obj.previousSibling; + ul = obj; + } + else + { + return false; + } + + if (!isOverObj(a, false, event) && !isOverObj(ul, true, event)) + { + jBoxHideMenu(a, ul); + } + + return true; } function jBoxHideMenu(a, ul) { - $dynano(a).rmClass('liteselected'); - - if ( jBox_slide_enable ) - { - slideIn(ul); - } - else - { - ul.style.display = 'none'; - } + $dynano(a).rmClass('liteselected'); + + if ( jBox_slide_enable ) + { + slideIn(ul); + } + else + { + ul.style.display = 'none'; + } } // Slide an element downwards until it is at full height. @@ -258,306 +258,306 @@ function slideOut(obj) { - if ( jBoxSlideBlocker[obj.id] ) - return false; - - jBoxSlideBlocker[obj.id] = true; - - if ( slide_speed == -1 ) - { - obj.style.display = 'block'; - return false; - } - - var currentheight = 0; - var targetheight = jBoxMenuHeights[obj.id]; - var inertiabase = inertia_base; - var inertiainc = inertia_inc; - slideStep(obj, 0); - domObjChangeOpac(100, obj); - obj.style.overflow = 'hidden'; - - // Don't edit past here - var timercnt = 0; - - var seed = Math.floor(Math.random() * 1000000); - sliderobj[seed] = obj; - - var framecnt = 0; - - while(true) - { - framecnt++; - timercnt += ( 100 - slide_speed ); - inertiabase += inertiainc; - currentheight += inertiabase; - if ( currentheight > targetheight ) - currentheight = targetheight; - setTimeout('slideStep(sliderobj['+seed+'], '+currentheight+', '+targetheight+');', timercnt); - if ( currentheight >= targetheight ) - break; - } - timercnt = timercnt + ( 100 - slide_speed ); - setTimeout('jBoxSlideBlocker[sliderobj['+seed+'].id] = false;', timercnt); - var opacstep = jBox_opacity / framecnt; - var opac = 0; - var timerstep = 0; - domObjChangeOpac(0, obj); - while(true) - { - timerstep += ( 100 - slide_speed ); - opac += opacstep; - setTimeout('domObjChangeOpac('+opac+', sliderobj['+seed+']);', timerstep); - if ( opac >= jBox_opacity ) - break; - } + if ( jBoxSlideBlocker[obj.id] ) + return false; + + jBoxSlideBlocker[obj.id] = true; + + if ( slide_speed == -1 ) + { + obj.style.display = 'block'; + return false; + } + + var currentheight = 0; + var targetheight = jBoxMenuHeights[obj.id]; + var inertiabase = inertia_base; + var inertiainc = inertia_inc; + slideStep(obj, 0); + domObjChangeOpac(100, obj); + obj.style.overflow = 'hidden'; + + // Don't edit past here + var timercnt = 0; + + var seed = Math.floor(Math.random() * 1000000); + sliderobj[seed] = obj; + + var framecnt = 0; + + while(true) + { + framecnt++; + timercnt += ( 100 - slide_speed ); + inertiabase += inertiainc; + currentheight += inertiabase; + if ( currentheight > targetheight ) + currentheight = targetheight; + setTimeout('slideStep(sliderobj['+seed+'], '+currentheight+', '+targetheight+');', timercnt); + if ( currentheight >= targetheight ) + break; + } + timercnt = timercnt + ( 100 - slide_speed ); + setTimeout('jBoxSlideBlocker[sliderobj['+seed+'].id] = false;', timercnt); + var opacstep = jBox_opacity / framecnt; + var opac = 0; + var timerstep = 0; + domObjChangeOpac(0, obj); + while(true) + { + timerstep += ( 100 - slide_speed ); + opac += opacstep; + setTimeout('domObjChangeOpac('+opac+', sliderobj['+seed+']);', timerstep); + if ( opac >= jBox_opacity ) + break; + } } function slideIn(obj) { - if ( obj.style.display != 'block' ) - return false; - - if ( jBoxSlideBlocker[obj.id] ) - return false; - - jBoxSlideBlocker[obj.id] = true; - - var targetheight = 0; - var dim = fetch_dimensions(obj); - var currentheight = jBoxMenuHeights[obj.id]; - var origheight = currentheight; - var inertiabase = inertia_base; - var inertiainc = inertia_inc; - domObjChangeOpac(100, obj); - obj.style.overflow = 'hidden'; - - // Don't edit past here - var timercnt = 0; - - var seed = Math.floor(Math.random() * 1000000); - sliderobj[seed] = obj; - - var framecnt = 0; - - for(var j = 0;j<100;j++) // while(true) - { - framecnt++; - timercnt = timercnt + ( 100 - slide_speed ); - inertiabase = inertiabase + inertiainc; - currentheight = currentheight - inertiabase; - if ( currentheight < targetheight ) - currentheight = targetheight; - setTimeout('slideStep(sliderobj['+seed+'], '+currentheight+');', timercnt); - if ( currentheight <= targetheight ) - break; - } - timercnt += ( 100 - slide_speed ); - setTimeout('sliderobj['+seed+'].style.display="none";sliderobj['+seed+'].style.height="'+origheight+'px";jBoxSlideBlocker[sliderobj['+seed+'].id] = false;', timercnt); - - var opacstep = jBox_opacity / framecnt; - var opac = jBox_opacity; - var timerstep = 0; - domObjChangeOpac(100, obj); - while(true) - { - timerstep += ( 100 - slide_speed ); - opac -= opacstep; - setTimeout('domObjChangeOpac('+opac+', sliderobj['+seed+']);', timerstep); - if ( opac <= 0 ) - break; - } - + if ( obj.style.display != 'block' ) + return false; + + if ( jBoxSlideBlocker[obj.id] ) + return false; + + jBoxSlideBlocker[obj.id] = true; + + var targetheight = 0; + var dim = fetch_dimensions(obj); + var currentheight = jBoxMenuHeights[obj.id]; + var origheight = currentheight; + var inertiabase = inertia_base; + var inertiainc = inertia_inc; + domObjChangeOpac(100, obj); + obj.style.overflow = 'hidden'; + + // Don't edit past here + var timercnt = 0; + + var seed = Math.floor(Math.random() * 1000000); + sliderobj[seed] = obj; + + var framecnt = 0; + + for(var j = 0;j<100;j++) // while(true) + { + framecnt++; + timercnt = timercnt + ( 100 - slide_speed ); + inertiabase = inertiabase + inertiainc; + currentheight = currentheight - inertiabase; + if ( currentheight < targetheight ) + currentheight = targetheight; + setTimeout('slideStep(sliderobj['+seed+'], '+currentheight+');', timercnt); + if ( currentheight <= targetheight ) + break; + } + timercnt += ( 100 - slide_speed ); + setTimeout('sliderobj['+seed+'].style.display="none";sliderobj['+seed+'].style.height="'+origheight+'px";jBoxSlideBlocker[sliderobj['+seed+'].id] = false;', timercnt); + + var opacstep = jBox_opacity / framecnt; + var opac = jBox_opacity; + var timerstep = 0; + domObjChangeOpac(100, obj); + while(true) + { + timerstep += ( 100 - slide_speed ); + opac -= opacstep; + setTimeout('domObjChangeOpac('+opac+', sliderobj['+seed+']);', timerstep); + if ( opac <= 0 ) + break; + } + } function slideStep(obj, height, maxheight) { - obj.style.height = height + 'px'; - //obj.style.clip = 'rect(3px,auto,'+maxheight+'px,auto)'; - obj.style.overflow = 'hidden'; - //obj.style.clip = 'rect('+height+'px,0px,'+maxheight+'px,auto);'; + obj.style.height = height + 'px'; + //obj.style.clip = 'rect(3px,auto,'+maxheight+'px,auto)'; + obj.style.overflow = 'hidden'; + //obj.style.clip = 'rect('+height+'px,0px,'+maxheight+'px,auto);'; } function isOverObj(obj, bias, event) { - var fieldUL = new Object(); - var dim = fetch_dimensions(obj); - var off = fetch_offset(obj); - fieldUL['top'] = off['top']; - fieldUL['left'] = off['left']; - fieldUL['right'] = off['left'] + dim['w']; - fieldUL['bottom'] = off['top'] + dim['h']; - - var mouseY_local = mouseY + getScrollOffset(); - - // document.getElementById('debug').innerHTML = '
Mouse: x: '+mouseX+', y:' + mouseY + '
' + document.getElementById('debug').innerHTML; - - if(bias) - { - if ( ( mouseX < fieldUL['left'] + 2 || mouseX > fieldUL['right'] - 5 ) || - ( mouseY_local < fieldUL['top'] - 2 || mouseY_local > fieldUL['bottom'] - 2 ) ) - { - return false; - } - } - else - { - if ( ( mouseX < fieldUL['left'] || mouseX > fieldUL['right'] ) || - ( mouseY_local < fieldUL['top'] || mouseY_local > fieldUL['bottom'] ) ) - return false; - } - - return true; + var fieldUL = new Object(); + var dim = fetch_dimensions(obj); + var off = fetch_offset(obj); + fieldUL['top'] = off['top']; + fieldUL['left'] = off['left']; + fieldUL['right'] = off['left'] + dim['w']; + fieldUL['bottom'] = off['top'] + dim['h']; + + var mouseY_local = mouseY + getScrollOffset(); + + // document.getElementById('debug').innerHTML = '
Mouse: x: '+mouseX+', y:' + mouseY + '
' + document.getElementById('debug').innerHTML; + + if(bias) + { + if ( ( mouseX < fieldUL['left'] + 2 || mouseX > fieldUL['right'] - 5 ) || + ( mouseY_local < fieldUL['top'] - 2 || mouseY_local > fieldUL['bottom'] - 2 ) ) + { + return false; + } + } + else + { + if ( ( mouseX < fieldUL['left'] || mouseX > fieldUL['right'] ) || + ( mouseY_local < fieldUL['top'] || mouseY_local > fieldUL['bottom'] ) ) + return false; + } + + return true; } function jBoxGarbageCollection(e) { - setMousePos(e); - var menus = document.getElementsByClassName('div', 'menu'); - if ( menus.length > 0 ) - { - for ( var i in menus ) - { - if ( typeof(menus[i]) != 'object') - continue; // toJSONString() compatibility - var uls = menus[i].getElementsByTagName('ul'); - if ( uls.length > 0 ) - { - for ( var j = 0; j < uls.length; j++ ) - { - if ( !isOverObj(uls[j], false, e) ) - { - $dynano(uls[j].previousSibling).rmClass('liteselected'); - //uls[j].style.display = 'none'; - slideIn(uls[j]); - } - } - } - var uls = getElementsByClassName(menus[i], 'divs', 'submenu'); - if ( uls.length > 0 ) - { - for ( var j = 0; j < uls.length; j++ ) - { - if ( !isOverObj(uls[j], false, e) ) - { - $dynano(uls[j].previousSibling).rmClass('liteselected'); - //uls[j].style.display = 'none'; - slideIn(uls[j]); - } - } - } - } - } + setMousePos(e); + var menus = document.getElementsByClassName('div', 'menu'); + if ( menus.length > 0 ) + { + for ( var i in menus ) + { + if ( typeof(menus[i]) != 'object') + continue; // toJSONString() compatibility + var uls = menus[i].getElementsByTagName('ul'); + if ( uls.length > 0 ) + { + for ( var j = 0; j < uls.length; j++ ) + { + if ( !isOverObj(uls[j], false, e) ) + { + $dynano(uls[j].previousSibling).rmClass('liteselected'); + //uls[j].style.display = 'none'; + slideIn(uls[j]); + } + } + } + var uls = getElementsByClassName(menus[i], 'divs', 'submenu'); + if ( uls.length > 0 ) + { + for ( var j = 0; j < uls.length; j++ ) + { + if ( !isOverObj(uls[j], false, e) ) + { + $dynano(uls[j].previousSibling).rmClass('liteselected'); + //uls[j].style.display = 'none'; + slideIn(uls[j]); + } + } + } + } + } } document.onclick = jBoxGarbageCollection; var getElementsByClassName = function(parent, type, cls) { - if(!type) - type = '*'; - ret = new Array(); - if ( !parent ) - return ret; - el = parent.getElementsByTagName(type); - for ( var i = 0; i < el.length; i++ ) - { - if ( typeof(el[i]) != 'object') - continue; // toJSONString() compatibility - if(el[i].className) - { - if(el[i].className.indexOf(' ') > 0) - { - classes = el[i].className.split(' '); - } - else - { - classes = new Array(); - classes.push(el[i].className); - } - if ( in_array(cls, classes) ) - ret.push(el[i]); - } - } - return ret; + if(!type) + type = '*'; + ret = new Array(); + if ( !parent ) + return ret; + el = parent.getElementsByTagName(type); + for ( var i = 0; i < el.length; i++ ) + { + if ( typeof(el[i]) != 'object') + continue; // toJSONString() compatibility + if(el[i].className) + { + if(el[i].className.indexOf(' ') > 0) + { + classes = el[i].className.split(' '); + } + else + { + classes = new Array(); + classes.push(el[i].className); + } + if ( in_array(cls, classes) ) + ret.push(el[i]); + } + } + return ret; } document.getElementsByClassName = function(type, cls) { - return getElementsByClassName(document, type, cls); + return getElementsByClassName(document, type, cls); } function setMousePos(event) { - if(IE) - { - if(!event) - { - event = window.event; - } - clX = event.clientX; - if ( document.body ) - sL = document.body.scrollLeft; - else - sL = 0; - mouseX = clX + sL; - mouseY = event.clientY + ( document.body ? document.body.scrollTop : 0 ); - return; - } - if( typeof(event.clientX) == 'number' ) - { - mouseX = event.clientX; - mouseY = event.clientY; - return; - } - else if( typeof(event.layerX) == 'number' ) - { - mouseX = event.layerX; - mouseY = event.layerY; - return; - } - else if( typeof(event.offsetX) == 'number' ) - { - mouseX = event.offsetX; - mouseY = event.offsetY; - return; - } - else if( typeof(event.screenX) == 'number' ) - { - mouseX = event.screenX; - mouseY = event.screenY; - return; - } - else if( typeof(event.x) == 'number' ) - { - mouseX = event.x; - mouseY = event.y; - return; - } + if(IE) + { + if(!event) + { + event = window.event; + } + clX = event.clientX; + if ( document.body ) + sL = document.body.scrollLeft; + else + sL = 0; + mouseX = clX + sL; + mouseY = event.clientY + ( document.body ? document.body.scrollTop : 0 ); + return; + } + if( typeof(event.clientX) == 'number' ) + { + mouseX = event.clientX; + mouseY = event.clientY; + return; + } + else if( typeof(event.layerX) == 'number' ) + { + mouseX = event.layerX; + mouseY = event.layerY; + return; + } + else if( typeof(event.offsetX) == 'number' ) + { + mouseX = event.offsetX; + mouseY = event.offsetY; + return; + } + else if( typeof(event.screenX) == 'number' ) + { + mouseX = event.screenX; + mouseY = event.screenY; + return; + } + else if( typeof(event.x) == 'number' ) + { + mouseX = event.x; + mouseY = event.y; + return; + } } document.onmousemove = function(e) { - setMousePos(e); + setMousePos(e); }; function removeTextNodes(obj) { - if(obj) - { - if(typeof(obj.tagName) != 'string' || ( String(obj) == '[object Text]' && is_Safari ) ) - { - if ( ( obj.nodeType == 3 && obj.data.match(/^([\s]*)$/ig) ) ) // || ( typeof(obj.innerHTML) == undefined && is_Safari ) ) - { - obj.parentNode.removeChild(obj); - return; - } - } - if(obj.firstChild) - { - for(var i = 0; i < obj.childNodes.length; i++) - { - removeTextNodes(obj.childNodes[i]); - } - } - } + if(obj) + { + if(typeof(obj.tagName) != 'string' || ( String(obj) == '[object Text]' && is_Safari ) ) + { + if ( ( obj.nodeType == 3 && obj.data.match(/^([\s]*)$/ig) ) ) // || ( typeof(obj.innerHTML) == undefined && is_Safari ) ) + { + obj.parentNode.removeChild(obj); + return; + } + } + if(obj.firstChild) + { + for(var i = 0; i < obj.childNodes.length; i++) + { + removeTextNodes(obj.childNodes[i]); + } + } + } }