[vhffs-dev] [428] Forgot to add js file for vhffs-ng theme |
[ Thread Index |
Date Index
| More vhffs.org/vhffs-dev Archives
]
Revision: 428
Author: beuss
Date: 2007-02-01 11:24:28 +0000 (Thu, 01 Feb 2007)
Log Message:
-----------
Forgot to add js file for vhffs-ng theme
Added Paths:
-----------
branches/vhffs_4.1/vhffs-panel/themes/vhffs-ng/js/
branches/vhffs_4.1/vhffs-panel/themes/vhffs-ng/js/browserdetect.js
branches/vhffs_4.1/vhffs-panel/themes/vhffs-ng/js/menu.js
Added: branches/vhffs_4.1/vhffs-panel/themes/vhffs-ng/js/browserdetect.js
===================================================================
--- branches/vhffs_4.1/vhffs-panel/themes/vhffs-ng/js/browserdetect.js 2007-02-01 09:31:36 UTC (rev 427)
+++ branches/vhffs_4.1/vhffs-panel/themes/vhffs-ng/js/browserdetect.js 2007-02-01 11:24:28 UTC (rev 428)
@@ -0,0 +1,98 @@
+// Browser Detect Lite v2.1.4
+// http://www.dithered.com/javascript/browser_detect/index.html
+// modified by Chris Nott (chris@xxxxxxxxxxxxxxxxxx - remove NOSPAM)
+
+
+function BrowserDetectLite() {
+ var ua = navigator.userAgent.toLowerCase();
+
+ // browser name
+ this.isGecko = (ua.indexOf('gecko') != -1 && ua.indexOf('safari') == -1);
+ this.isMozilla = (this.isGecko && ua.indexOf('gecko/') + 14 == ua.length);
+ this.isNS = ( (this.isGecko) ? (ua.indexOf('netscape') != -1) : ( (ua.indexOf('mozilla') != -1) && (ua.indexOf('spoofer') == -1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera') == -1) && (ua.indexOf('webtv') == -1) && (ua.indexOf('hotjava') == -1) ) );
+ this.isIE = ( (ua.indexOf('msie') != -1) && (ua.indexOf('opera') == -1) && (ua.indexOf('webtv') == -1) );
+ this.isSafari = (ua.indexOf('safari') != - 1);
+ this.isOpera = (ua.indexOf('opera') != -1);
+ this.isKonqueror = (ua.indexOf('konqueror') != -1 && !this.isSafari);
+ this.isIcab = (ua.indexOf('icab') != -1);
+ this.isAol = (ua.indexOf('aol') != -1);
+
+ // spoofing and compatible browsers
+ this.isIECompatible = ( (ua.indexOf('msie') != -1) && !this.isIE);
+ this.isNSCompatible = ( (ua.indexOf('mozilla') != -1) && !this.isNS && !this.isMozilla);
+
+ // browser version
+ this.versionMinor = parseFloat(navigator.appVersion);
+
+ // correct version number
+ if (this.isNS && this.isGecko) {
+ this.versionMinor = parseFloat( ua.substring( ua.lastIndexOf('/') + 1 ) );
+ }
+ else if (this.isIE && this.versionMinor >= 4) {
+ this.versionMinor = parseFloat( ua.substring( ua.indexOf('msie ') + 5 ) );
+ }
+ else if (this.isMozilla) {
+ this.versionMinor = parseFloat( ua.substring( ua.indexOf('rv:') + 3 ) );
+ }
+ else if (this.isSafari) {
+ this.versionMinor = parseFloat( ua.substring( ua.lastIndexOf('/') + 1 ) );
+ }
+ else if (this.isOpera) {
+ if (ua.indexOf('opera/') != -1) {
+ this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera/') + 6 ) );
+ }
+ else {
+ this.versionMinor = parseFloat( ua.substring( ua.indexOf('opera ') + 6 ) );
+ }
+ }
+ else if (this.isKonqueror) {
+ this.versionMinor = parseFloat( ua.substring( ua.indexOf('konqueror/') + 10 ) );
+ }
+ else if (this.isIcab) {
+ if (ua.indexOf('icab/') != -1) {
+ this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab/') + 6 ) );
+ }
+ else {
+ this.versionMinor = parseFloat( ua.substring( ua.indexOf('icab ') + 6 ) );
+ }
+ }
+
+ this.versionMajor = parseInt(this.versionMinor);
+ this.geckoVersion = ( (this.isGecko) ? ua.substring( (ua.lastIndexOf('gecko/') + 6), (ua.lastIndexOf('gecko/') + 14) ) : -1 );
+
+ // dom support
+ this.isDOM1 = (document.getElementById);
+ this.isDOM2Event = (document.addEventListener && document.removeEventListener);
+
+ // css compatibility mode
+ this.mode = document.compatMode ? document.compatMode : 'BackCompat';
+
+ // platform
+ this.isWin = (ua.indexOf('win') != -1);
+ this.isWin32 = (this.isWin && ( ua.indexOf('95') != -1 || ua.indexOf('98') != -1 || ua.indexOf('nt') != -1 || ua.indexOf('win32') != -1 || ua.indexOf('32bit') != -1 || ua.indexOf('xp') != -1) );
+ this.isMac = (ua.indexOf('mac') != -1);
+ this.isUnix = (ua.indexOf('unix') != -1 || ua.indexOf('sunos') != -1 || ua.indexOf('bsd') != -1 || ua.indexOf('x11') != -1)
+ this.isLinux = (ua.indexOf('linux') != -1);
+
+ // specific browser shortcuts
+ this.isNS4x = (this.isNS && this.versionMajor == 4);
+ this.isNS40x = (this.isNS4x && this.versionMinor < 4.5);
+ this.isNS47x = (this.isNS4x && this.versionMinor >= 4.7);
+ this.isNS4up = (this.isNS && this.versionMinor >= 4);
+ this.isNS6x = (this.isNS && this.versionMajor == 6);
+ this.isNS6up = (this.isNS && this.versionMajor >= 6);
+ this.isNS7x = (this.isNS && this.versionMajor == 7);
+ this.isNS7up = (this.isNS && this.versionMajor >= 7);
+
+ this.isIE4x = (this.isIE && this.versionMajor == 4);
+ this.isIE4up = (this.isIE && this.versionMajor >= 4);
+ this.isIE5x = (this.isIE && this.versionMajor == 5);
+ this.isIE55 = (this.isIE && this.versionMinor == 5.5);
+ this.isIE5up = (this.isIE && this.versionMajor >= 5);
+ this.isIE6x = (this.isIE && this.versionMajor == 6);
+ this.isIE6up = (this.isIE && this.versionMajor >= 6);
+
+ this.isIE4xMac = (this.isIE4x && this.isMac);
+}
+var browser = new BrowserDetectLite();
+
Added: branches/vhffs_4.1/vhffs-panel/themes/vhffs-ng/js/menu.js
===================================================================
--- branches/vhffs_4.1/vhffs-panel/themes/vhffs-ng/js/menu.js 2007-02-01 09:31:36 UTC (rev 427)
+++ branches/vhffs_4.1/vhffs-panel/themes/vhffs-ng/js/menu.js 2007-02-01 11:24:28 UTC (rev 428)
@@ -0,0 +1,307 @@
+/*
+Author : bieler batiste
+Company : doSimple : http://www.dosimple.ch
+send me a mail for more informations : faden@xxxxxxxxxxxxxxxxxxxxxxx - remove ( PASDEPOURRIEL )
+
+Short javascript function to create and handle a CSS navigation menu
+
+Copyright (C) 2004 Bieler Batiste
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+// the timeout for the menu
+var timeout = 1000;
+
+// not very clean but simple
+// the function can be run in the HTML for faster display
+window.onload=initMenu;
+
+// creat timeout variables for list item
+// it's for avoid some warning with IE
+for( var i = 0; i < 100; i++ )
+{
+ eval("var timeoutli" + i + " = false;");
+}
+
+// this fonction apply the CSS style and the event
+function initMenu()
+{
+ // a test to avoid some browser like IE4, Opera 6, and IE Mac
+ if ( browser.isDOM1
+ && !( browser.isMac && browser.isIE )
+ && !( browser.isOpera && browser.versionMajor < 7 )
+ && !( browser.isIE && browser.versionMajor < 5 ) )
+ {
+ // get some element
+ var menu = document.getElementById('menu'); // the root element
+ var lis = menu.getElementsByTagName('li'); // all the li
+
+ // change the class name of the menu,
+ // it's usefull for compatibility with old browser
+ menu.className='menu';
+
+ // i am searching for ul element in li element
+ for ( var i=0; i<lis.length; i++ )
+ {
+ // is there a ul element ?
+ if ( lis.item(i).getElementsByTagName('ul').length > 0 )
+ {
+ // improve IE key navigation
+ if ( browser.isIE )
+ {
+ addAnEvent(lis.item(i),'keyup',show);
+ }
+ // link events to list item
+ addAnEvent(lis.item(i),'mouseover',show);
+ addAnEvent(lis.item(i),'mouseout',timeoutHide);
+ addAnEvent(lis.item(i),'blur',timeoutHide);
+ addAnEvent(lis.item(i),'focus',show);
+
+ // add an id to list item
+ lis.item(i).setAttribute( 'id', "li"+i );
+ }
+ }
+ }
+}
+
+function addAnEvent( target, eventName, functionName )
+{
+ // apply the method to IE
+ if ( browser.isIE )
+ {
+ //attachEvent dont work properly with this
+ eval('target.on'+eventName+'=functionName');
+ }
+ // apply the method to DOM compliant browsers
+ else
+ {
+ target.addEventListener( eventName , functionName , true ); // true is important for Opera7
+ }
+}
+
+// hide the first ul element of the current element
+function timeoutHide()
+{
+ // start the timeout
+ eval( "timeout" + this.id + " = window.setTimeout('hideUlUnder( \"" + this.id + "\" )', " + timeout + " );");
+}
+
+// hide the ul elements under the element identified by id
+function hideUlUnder( id )
+{
+ document.getElementById(id).getElementsByTagName('ul')[0].style['visibility'] = 'hidden';
+}
+
+// show the first ul element found under this element
+function show()
+{
+ // show the sub menu
+ this.getElementsByTagName('ul')[0].style['visibility'] = 'visible';
+ var currentNode=this;
+ while(currentNode)
+ {
+ if( currentNode.nodeName=='LI')
+ {
+ currentNode.getElementsByTagName('a')[0].className = 'linkOver';
+ }
+ currentNode=currentNode.parentNode;
+ }
+ // clear the timeout
+ eval ( "clearTimeout( timeout"+ this.id +");" );
+ hideAllOthersUls( this );
+}
+
+// hide all ul on the same level of this list item
+function hideAllOthersUls( currentLi )
+{
+ var lis = currentLi.parentNode;
+ for ( var i=0; i<lis.childNodes.length; i++ )
+ {
+ if ( lis.childNodes[i].nodeName=='LI' && lis.childNodes[i].id != currentLi.id )
+ {
+ hideUlUnderLi( lis.childNodes[i] );
+ }
+ }
+}
+
+// hide all the ul wich are in the li element
+function hideUlUnderLi( li )
+{
+ var as = li.getElementsByTagName('a');
+ for ( var i=0; i<as.length; i++ )
+ {
+ as.item(i).className="";
+ }
+ var uls = li.getElementsByTagName('ul');
+ for ( var i=0; i<uls.length; i++ )
+ {
+ uls.item(i).style['visibility'] = 'hidden';
+ }
+}
+/*
+Author : bieler batiste
+Company : doSimple : http://www.dosimple.ch
+send me a mail for more informations : faden@xxxxxxxxxxxxxxxxxxxxxxx - remove ( PASDEPOURRIEL )
+
+Short javascript function to create and handle a CSS navigation menu
+
+Copyright (C) 2004 Bieler Batiste
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+*/
+
+// the timeout for the menu
+var timeout = 1000;
+
+// not very clean but simple
+// the function can be run in the HTML for faster display
+// window.onload=initMenu;
+
+// creat timeout variables for list item
+// it's for avoid some warning with IE
+for( var i = 0; i < 100; i++ )
+{
+ eval("var timeoutli" + i + " = false;");
+}
+
+// this fonction apply the CSS style and the event
+function initMenu()
+{
+ // a test to avoid some browser like IE4, Opera 6, and IE Mac
+ if ( browser.isDOM1
+ && !( browser.isMac && browser.isIE )
+ && !( browser.isOpera && browser.versionMajor < 7 )
+ && !( browser.isIE && browser.versionMajor < 5 ) )
+ {
+ // get some element
+ var menu = document.getElementById('menu'); // the root element
+ var lis = menu.getElementsByTagName('li'); // all the li
+
+ // change the class name of the menu,
+ // it's usefull for compatibility with old browser
+ menu.className='menu';
+
+ // i am searching for ul element in li element
+ for ( var i=0; i<lis.length; i++ )
+ {
+ // is there a ul element ?
+ if ( lis.item(i).getElementsByTagName('ul').length > 0 )
+ {
+ // improve IE key navigation
+ if ( browser.isIE )
+ {
+ addAnEvent(lis.item(i),'keyup',show);
+ }
+ // link events to list item
+ addAnEvent(lis.item(i),'mouseover',show);
+ addAnEvent(lis.item(i),'mouseout',timeoutHide);
+ addAnEvent(lis.item(i),'blur',timeoutHide);
+ addAnEvent(lis.item(i),'focus',show);
+
+ // add an id to list item
+ lis.item(i).setAttribute( 'id', "li"+i );
+ }
+ }
+ }
+}
+
+function addAnEvent( target, eventName, functionName )
+{
+ // apply the method to IE
+ if ( browser.isIE )
+ {
+ //attachEvent dont work properly with this
+ eval('target.on'+eventName+'=functionName');
+ }
+ // apply the method to DOM compliant browsers
+ else
+ {
+ target.addEventListener( eventName , functionName , true ); // true is important for Opera7
+ }
+}
+
+// hide the first ul element of the current element
+function timeoutHide()
+{
+ // start the timeout
+ eval( "timeout" + this.id + " = window.setTimeout('hideUlUnder( \"" + this.id + "\" )', " + timeout + " );");
+}
+
+// hide the ul elements under the element identified by id
+function hideUlUnder( id )
+{
+ document.getElementById(id).getElementsByTagName('ul')[0].style['visibility'] = 'hidden';
+}
+
+// show the first ul element found under this element
+function show()
+{
+ // show the sub menu
+ this.getElementsByTagName('ul')[0].style['visibility'] = 'visible';
+ var currentNode=this;
+ while(currentNode)
+ {
+ if( currentNode.nodeName=='LI')
+ {
+ currentNode.getElementsByTagName('a')[0].className = 'linkOver';
+ }
+ currentNode=currentNode.parentNode;
+ }
+ // clear the timeout
+ eval ( "clearTimeout( timeout"+ this.id +");" );
+ hideAllOthersUls( this );
+}
+
+// hide all ul on the same level of this list item
+function hideAllOthersUls( currentLi )
+{
+ var lis = currentLi.parentNode;
+ for ( var i=0; i<lis.childNodes.length; i++ )
+ {
+ if ( lis.childNodes[i].nodeName=='LI' && lis.childNodes[i].id != currentLi.id )
+ {
+ hideUlUnderLi( lis.childNodes[i] );
+ }
+ }
+}
+
+// hide all the ul wich are in the li element
+function hideUlUnderLi( li )
+{
+ var as = li.getElementsByTagName('a');
+ for ( var i=0; i<as.length; i++ )
+ {
+ as.item(i).className="";
+ }
+ var uls = li.getElementsByTagName('ul');
+ for ( var i=0; i<uls.length; i++ )
+ {
+ uls.item(i).style['visibility'] = 'hidden';
+ }
+}
+