[ Index ]
 

Code source de e107 0.7.8

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/e107_themes/leaf/ -> theme.js (source)

   1  function setActiveStyleSheet(title) {
   2    var i, a, main;
   3    for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
   4      if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
   5        a.disabled = true;
   6        if(a.getAttribute("title") == title) a.disabled = false;
   7      }
   8    }
   9  }
  10  
  11  function getActiveStyleSheet() {
  12    var i, a;
  13    for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
  14      if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  15    }
  16    return null;
  17  }
  18  
  19  function getPreferredStyleSheet() {
  20    var i, a;
  21    for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
  22      if(a.getAttribute("rel").indexOf("style") != -1
  23         && a.getAttribute("rel").indexOf("alt") == -1
  24         && a.getAttribute("title")
  25         ) return a.getAttribute("title");
  26    }
  27    return null;
  28  }
  29  
  30  function createCookie(name,value,days) {
  31    if (days) {
  32      var date = new Date();
  33      date.setTime(date.getTime()+(days*24*60*60*1000));
  34      var expires = "; expires="+date.toGMTString();
  35    }
  36    else expires = "";
  37    document.cookie = name+"="+value+expires+"; path=/";
  38  }
  39  
  40  function readCookie(name) {
  41    var nameEQ = name + "=";
  42    var ca = document.cookie.split(';');
  43    for(var i=0;i < ca.length;i++) {
  44      var c = ca[i];
  45      while (c.charAt(0)==' ') c = c.substring(1,c.length);
  46      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  47    }
  48    return null;
  49  }
  50  
  51  window.onload = function(e) {
  52    var cookie = readCookie("style");
  53    var title = cookie ? cookie : getPreferredStyleSheet();
  54    setActiveStyleSheet(title);
  55  }
  56  
  57  window.onunload = function(e) {
  58    var title = getActiveStyleSheet();
  59    createCookie("style", title, 365);
  60  }
  61  
  62  var cookie = readCookie("style");
  63  var title = cookie ? cookie : getPreferredStyleSheet();
  64  setActiveStyleSheet(title);
  65  
  66  
  67  
  68  // from http://www.kryogenix.org
  69  // by Scott Andrew - http://scottandrew.com
  70  // add an eventlistener to browsers that can do it somehow.
  71  function addEvent(obj, evType, fn)
  72      {
  73      if (obj.addEventListener)
  74          {
  75          obj.addEventListener(evType, fn, false);
  76          return true;
  77          }
  78      else if (obj.attachEvent)
  79          {
  80          var r = obj.attachEvent('on'+evType, fn);
  81          return r;
  82          }
  83      else
  84          {
  85          return false;
  86          }
  87      }
  88  
  89  function floatImages()
  90      {
  91      // adapted from http://www.dithered.com/javascript/browser_detect/
  92      //**************************************************************//
  93      // sniff user agent
  94      var userAgent = navigator.userAgent.toLowerCase();
  95  
  96      // if Mozilla 1.4 then quit
  97      if ((userAgent.indexOf('gecko') != -1) && (userAgent.indexOf('gecko/') + 14 == userAgent.length) && (parseFloat(userAgent.substring(userAgent.indexOf('rv:') + 3)) == '1.4')) return;
  98  
  99      // if Opera then quit
 100      if (document.all && window.Event) return;
 101      //**************************************************************//
 102  
 103      // check this browser can cope with what we want to do
 104      if (!document.getElementById) return;
 105      var blogDiv = document.getElementById('blog');
 106      if (!blogDiv) return;
 107      if (!blogDiv.offsetWidth) return;
 108  
 109      blogDiv.className = (blogDiv.offsetWidth >= 500) ? "float-images" : "block-images";
 110      }
 111  
 112  // Blockquote citations
 113  
 114  // Simon Willison's work:
 115  // http://simon.incutio.com/archive/2002/12/20/#blockquoteCitations
 116  
 117  // Also Dunstan Orchard's work:
 118  // http://1976design.com/blog/archive/2003/11/10/updates/
 119  function blockquoteCite()
 120      {
 121      if (!document.createElementNS)
 122          {
 123          document.createElementNS = function(ns, elt)
 124              {
 125              return document.createElement(elt);
 126              }
 127          }
 128      quotes = document.getElementsByTagName('blockquote');
 129      for (i = 0; i < quotes.length; i++)
 130          {
 131          var cite = quotes[i].getAttribute('cite');
 132          // value of cite attribute should only contain URI, not any other
 133          if ((cite) && (cite != ''))
 134              {
 135              newlink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
 136              newlink.setAttribute('href', cite);
 137              newlink.className = 'cite-link';
 138              newlink.appendChild(document.createTextNode(cite));
 139              newdiv = document.createElementNS('http://www.w3.org/1999/xhtml', 'cite');
 140              newdiv.className = 'blockquote-cite';
 141              newdiv.appendChild(document.createTextNode('Source: '));
 142              newdiv.appendChild(newlink);
 143              quotes[i].appendChild(newdiv);
 144              quotes[i].removeAttribute('cite');
 145              }
 146          }
 147      }
 148  
 149  // Ins and Del tags citations
 150  function insdelCite()
 151      {
 152      if (!document.createElementNS)
 153          {
 154          document.createElementNS = function(ns, elt)
 155              {
 156              return document.createElement(elt);
 157              }
 158          }
 159      var insdel = new Array(2);
 160      insdel[0] = document.getElementsByTagName('ins');
 161      insdel[1] = document.getElementsByTagName('del');
 162      for (var i=0; i<insdel.length; i++)
 163          {
 164          if (insdel[i])
 165              {
 166              for (var id=0; id<insdel[i].length; id++)
 167                  {
 168                  var isdl = insdel[i][id].getAttribute('cite');
 169                  if ((isdl) && (isdl != ""))
 170                      {
 171                      idlink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
 172                      idlink.setAttribute('href', isdl);
 173                      idlink.className = 'cite-link ' + (i == 0 ? 'ins-cite' : 'del-cite');
 174                      idlink.setAttribute('title','citation of ' + (i == 0 ? 'added' : 'deleted') + ' text');
 175                      idlink.appendChild(document.createTextNode('#'));
 176                      insdel[i][id].appendChild(idlink);
 177                      insdel[i][id].removeAttribute('cite');
 178                      }
 179                  }
 180              }
 181          }
 182      }
 183  
 184  // Force IE not to show alternate text as tooltip
 185  function noAltTooltip()
 186      {
 187      images = document.getElementsByTagName('img');
 188      for (var i = 0; i < images.length; i++)
 189          {
 190          var title = images[i].getAttribute('title');
 191          var alt = images[i].getAttribute('alt');
 192          if ((document.all) && (alt) && (!title))
 193              {
 194              images[i].setAttribute('title', '');
 195              }
 196          }
 197      }
 198  
 199  // Nice Titles
 200  
 201  // original code by Stuart Langridge 2003-11
 202  // with additions to the code by other good people
 203  // http://www.kryogenix.org/code/browser/nicetitle/
 204  // thank you, sir
 205  
 206  // modified by Peter Janes 2003-03-25
 207  // http://peterjanes.ca/blog/archives/2003/03/25/nicetitles-for-ins-and-del
 208  // added in ins and del tags
 209  
 210  // modified by Dunstan Orchard 2003-11-18
 211  // http://1976design.com/blog/
 212  // added in accesskey information
 213  // tried ever-so-hard, but couldn't work out how to do what Ethan did
 214  
 215  // final genius touch by by Ethan Marcotte 2003-11-18
 216  // http://www.sidesh0w.com/
 217  // worked out how to delay showing the popups to make them more like the browser's own
 218  
 219  // set the namespace
 220  var XHTMLNS = 'http://www.w3.org/1999/xhtml';
 221  var CURRENT_NICE_TITLE;
 222  
 223  // browser sniff
 224  var browser = new Browser();
 225  
 226  // determine browser and version.
 227  function Browser()
 228      {
 229      var ua, s, i;
 230  
 231      this.isIE = false;
 232      this.isNS = false;
 233      this.version = null;
 234  
 235      ua = navigator.userAgent;
 236  
 237      s = 'MSIE';
 238      if ((i = ua.indexOf(s)) >= 0)
 239          {
 240          this.isIE = true;
 241          this.version = parseFloat(ua.substr(i + s.length));
 242          return;
 243          }
 244  
 245      s = 'Netscape6/';
 246      if ((i = ua.indexOf(s)) >= 0)
 247          {
 248          this.isNS = true;
 249          this.version = parseFloat(ua.substr(i + s.length));
 250          return;
 251          }
 252  
 253      // treat any other 'Gecko' browser as NS 6.1.
 254      s = 'Gecko';
 255      if ((i = ua.indexOf(s)) >= 0)
 256          {
 257          this.isNS = true;
 258          this.version = 6.1;
 259          return;
 260          }
 261      }
 262  
 263  // 2003-11-19 sidesh0w
 264  // set delay vars to emulate normal hover delay
 265  var delay;
 266  var interval = 0.60;
 267  
 268  // this function runs on window load
 269  // it runs through all the links on the page as starts listening for actions
 270  function makeNiceTitles()
 271      {
 272      if (!document.createElement || !document.getElementsByTagName) return;
 273      if (!document.createElementNS)
 274          {
 275          document.createElementNS = function(ns, elt)
 276              {
 277              return document.createElement(elt);
 278              }
 279          }
 280  
 281      // do regular links
 282      if (!document.links)
 283          {
 284          document.links = document.getElementsByTagName('a');
 285          }
 286      for (var ti=0; ti<document.links.length; ti++)
 287          {
 288          var lnk = document.links[ti];
 289          // * I added specific class names here..
 290          if (lnk.title)
 291              {
 292              lnk.setAttribute('nicetitle', lnk.title);
 293              lnk.removeAttribute('title');
 294              addEvent(lnk, 'mouseover', showDelay);
 295              addEvent(lnk, 'mouseout', hideNiceTitle);
 296              addEvent(lnk, 'focus', showDelay);
 297              addEvent(lnk, 'blur', hideNiceTitle);
 298              }
 299          }
 300  
 301      // 2003-03-25 Peter Janes
 302      // do ins and del tags
 303      var tags = new Array(2);
 304      tags[0] = document.getElementsByTagName('ins');
 305      tags[1] = document.getElementsByTagName('del');
 306      for (var tt=0; tt<tags.length; tt++)
 307          {
 308          if (tags[tt])
 309              {
 310              for (var ti=0; ti<tags[tt].length; ti++)
 311                  {
 312                  var tag = tags[tt][ti];
 313                  if (tag.dateTime)
 314                      {
 315                      var strDate = tag.dateTime;
 316                      // HTML/ISO8601 date: yyyy-mm-ddThh:mm:ssTZD (Z, -hh:mm, +hh:mm)
 317                      var month = strDate.substring(5,7);
 318                      var day = strDate.substring(8,10);
 319                      if (month[0] == '0')
 320                          {
 321                          month = month[1];
 322                          }
 323                      if (day[0] == '0')
 324                          {
 325                          day = day[1];
 326                          }
 327                      var dtIns = new Date(strDate.substring(0,4), month-1, day, strDate.substring(11,13), strDate.substring(14,16), strDate.substring(17,19));
 328                      tag.setAttribute('nicetitle', (tt == 0 ? 'Added' : 'Deleted') + ' on ' + dtIns.toString());
 329                      addEvent(tag, 'mouseover', showDelay);
 330                      addEvent(tag, 'mouseout', hideNiceTitle);
 331                      addEvent(tag, 'focus', showDelay);
 332                      addEvent(tag, 'blur', hideNiceTitle);
 333                      }
 334                  }
 335              }
 336          }
 337      }
 338  
 339  function findPosition(oLink)
 340      {
 341      if (oLink.offsetParent)
 342          {
 343          for (var posX = 0, posY = 0; oLink.offsetParent; oLink = oLink.offsetParent)
 344              {
 345              posX += oLink.offsetLeft;
 346              posY += oLink.offsetTop;
 347              }
 348          return [posX, posY];
 349          }
 350      else
 351          {
 352          return [oLink.x, oLink.y];
 353          }
 354      }
 355  
 356  function getParent(el, pTagName)
 357      {
 358      if (el == null)
 359          {
 360          return null;
 361          }
 362      // gecko bug, supposed to be uppercase
 363      else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())
 364          {
 365          return el;
 366          }
 367      else
 368          {
 369          return getParent(el.parentNode, pTagName);
 370          }
 371      }
 372  
 373  // 2003-11-19 sidesh0w
 374  // trailerpark wrapper function
 375  function showDelay(e)
 376      {
 377      if (window.event && window.event.srcElement)
 378          {
 379          lnk = window.event.srcElement
 380          }
 381      else if (e && e.target)
 382          {
 383          lnk = e.target
 384          }
 385      if (!lnk) return;
 386  
 387      // lnk is a textnode or an elementnode that's not ins/del
 388      if (lnk.nodeType == 3 || (lnk.nodeType == 1 && lnk.tagName.toLowerCase() != 'ins' && lnk.tagName.toLowerCase() != 'del'))
 389          {
 390          // ascend parents until we hit a link
 391          lnk = getParent(lnk, 'a');
 392          }
 393  
 394      delay = setTimeout("showNiceTitle(lnk)", interval * 1000);
 395      }
 396  
 397  // build and show the nice titles
 398  function showNiceTitle(link)
 399      {
 400      if (CURRENT_NICE_TITLE) hideNiceTitle(CURRENT_NICE_TITLE);
 401      if (!document.getElementsByTagName) return;
 402  
 403      nicetitle = lnk.getAttribute('nicetitle');
 404  
 405      var d = document.createElementNS(XHTMLNS, 'div');
 406      d.className = 'nicetitle';
 407      var dc = document.createElementNS(XHTMLNS, 'div');
 408      dc.className = 'nicetitle-content';
 409      d.appendChild(dc);
 410      tnt = document.createTextNode(nicetitle);
 411      pat = document.createElementNS(XHTMLNS, 'p');
 412      pat.className = 'titletext';
 413      pat.appendChild(tnt);
 414  
 415      // 2003-11-18 Dunstan Orchard
 416      // added in accesskey info
 417      if (lnk.accessKey)
 418          {
 419          axs = document.createTextNode(' [' + lnk.accessKey + ']');
 420          axsk = document.createElementNS(XHTMLNS, 'span');
 421          axsk.className = 'accesskey';
 422          axsk.appendChild(axs);
 423          pat.appendChild(axsk);
 424          }
 425      dc.appendChild(pat);
 426  
 427      if (lnk.href)
 428          {
 429          tnd = document.createTextNode(lnk.href);
 430          pad = document.createElementNS(XHTMLNS, 'p');
 431          pad.className = 'destination';
 432          pad.appendChild(tnd);
 433          dc.appendChild(pad);
 434          }
 435  
 436      STD_WIDTH = 300;
 437  
 438      if (lnk.href)
 439          {
 440          h = lnk.href.length;
 441          }
 442      else
 443          {
 444          h = nicetitle.length;
 445          }
 446  
 447      if (nicetitle.length)
 448          {
 449          t = nicetitle.length;
 450          }
 451  
 452      h_pixels = h*6;
 453      t_pixels = t*10;
 454  
 455      if (h_pixels > STD_WIDTH)
 456          {
 457          w = h_pixels;
 458          }
 459      else if ((STD_WIDTH>t_pixels) && (t_pixels>h_pixels))
 460          {
 461          w = t_pixels;
 462          }
 463      else if ((STD_WIDTH>t_pixels) && (h_pixels>t_pixels))
 464          {
 465          w = h_pixels;
 466          }
 467      else
 468          {
 469          w = STD_WIDTH;
 470          }
 471  
 472      d.style.width = w + 'px';
 473  
 474      mpos = findPosition(lnk);
 475      mx = mpos[0];
 476      my = mpos[1];
 477  
 478      d.style.left = (mx+15) + 'px';
 479      d.style.top = (my+35) + 'px';
 480  
 481      if (window.innerWidth && ((mx+w) > window.innerWidth))
 482          {
 483          d.style.left = (window.innerWidth - w - 25) + 'px';
 484          }
 485      if (document.body.scrollWidth && ((mx+w) > document.body.scrollWidth))
 486          {
 487          d.style.left = (document.body.scrollWidth - w - 25) + 'px';
 488          }
 489  
 490      document.getElementsByTagName('body')[0].appendChild(d);
 491  
 492      CURRENT_NICE_TITLE = d;
 493      }
 494  
 495  function hideNiceTitle(e)
 496      {
 497      // 2003-11-19 sidesh0w
 498      // clearTimeout
 499      if (delay) clearTimeout(delay);
 500      if (!document.getElementsByTagName) return;
 501      if (CURRENT_NICE_TITLE)
 502          {
 503          document.getElementsByTagName('body')[0].removeChild(CURRENT_NICE_TITLE);
 504          CURRENT_NICE_TITLE = null;
 505          }
 506      }
 507  
 508  addEvent(window, "load", floatImages);
 509  addEvent(window, "resize", floatImages);
 510  addEvent(window, "load", blockquoteCite);
 511  addEvent(window, "load", insdelCite);
 512  addEvent(window, "load", noAltTooltip);
 513  addEvent(window, "load", makeNiceTitles);
 514  
 515  // I'm very poor in JavaScript. Please correct me if I'm wrong.
 516  
 517  
 518  
 519  
 520  
 521  
 522  
 523  
 524  


Généré le : Sun Apr 1 01:23:32 2007 par Balluche grâce à PHPXref 0.7