SVN: livecd/kde4/html: box.txt css/style.css index.php index.txt js js/builder.js js/effects.js js/l...

shadzik shadzik at pld-linux.org
Tue Feb 17 21:54:30 CET 2009


Author: shadzik
Date: Tue Feb 17 21:54:30 2009
New Revision: 10128

Added:
   livecd/kde4/html/js/
   livecd/kde4/html/js/builder.js
   livecd/kde4/html/js/effects.js
   livecd/kde4/html/js/lightbox.js
   livecd/kde4/html/js/prototype.js
   livecd/kde4/html/js/scriptaculous.js
   livecd/kde4/html/rpmqa-RC4.txt
Modified:
   livecd/kde4/html/box.txt
   livecd/kde4/html/css/style.css
   livecd/kde4/html/index.php
   livecd/kde4/html/index.txt
   livecd/kde4/html/kb.txt
Log:
- new files and changes to index


Modified: livecd/kde4/html/box.txt
==============================================================================
--- livecd/kde4/html/box.txt	(original)
+++ livecd/kde4/html/box.txt	Tue Feb 17 21:54:30 2009
@@ -1,3 +1,9 @@
+<a href="pldlive-kde4-RC4-2009021702.i686.iso">
+	<span class="item">
+	<span class="sidedate">4.2<br /><span>RC4</span></span>          
+	<strong>Titanium LiveCD RC 4</strong><br />Includes KDE 4.2, KOffice 2.0 Beta 6, Amarok, K3b.
+	</span>
+</a>
 <a href="pldlive-kde4-RC3-2009020303.i686.iso">
 	<span class="item">
 	<span class="sidedate">4.2<br /><span>RC3</span></span>          

Modified: livecd/kde4/html/css/style.css
==============================================================================
--- livecd/kde4/html/css/style.css	(original)
+++ livecd/kde4/html/css/style.css	Tue Feb 17 21:54:30 2009
@@ -78,3 +78,30 @@
 	padding: 10px 10px 2px;
 }
 	*/
+#lightbox{	position: absolute;	left: 0; width: 100%; z-index: 100; text-align: center; line-height: 0;}
+#lightbox img{ width: auto; height: auto;}
+#lightbox a img{ border: none; }
+
+#outerImageContainer{ position: relative; background-color: #fff; width: 250px; height: 250px; margin: 0 auto; }
+#imageContainer{ padding: 10px; }
+
+#loading{ position: absolute; top: 40%; left: 0%; height: 25%; width: 100%; text-align: center; line-height: 0; }
+#hoverNav{ position: absolute; top: 0; left: 0; height: 100%; width: 100%; z-index: 10; }
+#imageContainer>#hoverNav{ left: 0;}
+#hoverNav a{ outline: none;}
+
+#prevLink, #nextLink{ width: 49%; height: 100%; background-image: url(data:image/gif;base64,AAAA); /* Trick IE into showing hover */ display: block; }
+#prevLink { left: 0; float: left;}
+#nextLink { right: 0; float: right;}
+#prevLink:hover, #prevLink:visited:hover { background: url(../images/prevlabel.gif) left 15% no-repeat; }
+#nextLink:hover, #nextLink:visited:hover { background: url(../images/nextlabel.gif) right 15% no-repeat; }
+
+#imageDataContainer{ font: 10px Verdana, Helvetica, sans-serif; background-color: #fff; margin: 0 auto; line-height: 1.4em; overflow: auto; width: 100%	; }
+
+#imageData{	padding:0 10px; color: #666; }
+#imageData #imageDetails{ width: 70%; float: left; text-align: left; }	
+#imageData #caption{ font-weight: bold;	}
+#imageData #numberDisplay{ display: block; clear: left; padding-bottom: 1.0em;	}			
+#imageData #bottomNavClose{ width: 66px; float: right;  padding-bottom: 0.7em; outline: none;}	 	
+
+#overlay{ position: absolute; top: 0; left: 0; z-index: 90; width: 100%; height: 500px; background-color: #000; }

Modified: livecd/kde4/html/index.php
==============================================================================
--- livecd/kde4/html/index.php	(original)
+++ livecd/kde4/html/index.php	Tue Feb 17 21:54:30 2009
@@ -7,26 +7,72 @@
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 	<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" />
-	<meta name="author" content="Luka Cvrk - www.solucija.com" />
-	<meta name="description" content="Site Description" />
-	<meta name="keywords" content="site, keywords" />
+	<meta name="author" content="shadzik - pld-linux.org" />
+	<meta name="description" content="PLD-Linux LiveCD with KDE4" />
+	<meta name="keywords" content="pld-linux, pldlive, livecd, kde4 live, livekde4, pldlive kde4" />
 	<meta name="robots" content="index, follow" />
 	<link rel="stylesheet" type="text/css" media="screen" href="css/style.css" />
 	<title>PLD-Linux LiveCD with K Desktop Environment 4</title>
+	<script type="text/javascript" src="js/prototype.js"></script>
+	<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
+	<script type="text/javascript" src="js/lightbox.js"></script>
+	<script language="JavaScript">
+	<!--
+	/*
+	 * LGPL, Piotr Budny vip (at) pld-linux.org 2008
+	 */
+
+	var tabs =
+	{
+		init: function()
+		{
+			var tabs = document.getElementById("feature_menu");
+			var elements = tabs.getElementsByTagName('a');
+
+			for (i = 0; i < elements.length; i++)
+			{
+				elements[i].onclick = this.changeCurrent;
+			}
+		},
+
+		loadContent: function(id)
+		{
+			var content = document.getElementById("feature");
+			try{
+				content.innerHTML = document.getElementById(id).innerHTML;
+			}catch (e){}
+		},
+
+		changeCurrent: function()
+		{
+			var tabslist = document.getElementById("feature_menu");
+			var elements = tabslist.getElementsByTagName("a");
+
+			for( var i = 0; i < elements.length; i++ )
+			{
+				var element = elements[i];
+				element.setAttribute("class", "");
+				element.setAttribute("className", "");
+			}
+
+			this.setAttribute("class", "current");
+			this.setAttribute("className", "current");
+
+			tabs.loadContent(this.getAttribute("content"));
+			return;
+		}
+	};
+
+	function initTabs()
+	{
+		tabs.init();
+		tabs.loadContent("feature-1");
+	}
+	-->
+	</script>
 </head>
-<body>
+<body onload='initTabs()'>
 	<div class="wrap background">
-<?
-/*		<div id="search">
-			<form action="">
-				<fieldset>
-					<input type="text" class="field" value="Search Keywords" />
-					<input type="submit" class="button" value="" />
-				</fieldset>
-			</form>
-			</div>
-*/
-?>
 		<ul id="menu">
 <?
 	switch($id) {
@@ -48,14 +94,29 @@
 		</div>
 		
 		<ul id="feature_menu">
-			<li><a class="current" href="">Screenshot</a></li>
+			<li><a class="current" href="#" content="feature-1">Screenshot 1</a></li>
+			<li><a href="#" content="feature-2">Screenshot 2</a></li>
+			<li><a href="#" content="feature-3">Screenshot 3</a></li>
 		</ul>
 
 		<div id="feature">
-			<img src="images/kde-4.2RC1-1mini.png" alt="Featured" />
-			<p>This screenshot shows a typical KDE 4 desktop with Konsole and a "About KDE" window. Nothing really fancy unless you never used it.</p>
+		</div>
+
+		<div id="feature-1" style="visibility: hidden; display: none;">
+			<a href="images/screenshot-1.png" rel="lightbox"><img src="images/screenshot-1mini.png" alt="Featured" /></a>
+			<p>This screenshot shows KWord from KOffice 2.0 Beta6 with a custom text. Wow! It really works!</p>
+		</div>
+	
+		<div id="feature-2" style="visibility: hidden; display: none;">
+			<a href="images/screenshot-2.png" rel="lightbox"><img src="images/screenshot-2mini.png" alt="Featured" /></a>
+			<p>The al(most)mighty Dolphin - a powerful filemanager - with a "About KDE" window.</p>
 		</div>
 		
+		<div id="feature-3" style="visibility: hidden; display: none;">
+			<a href="images/screenshot-3.png" rel="lightbox"><img src="images/screenshot-3mini.png" alt="Featured" /></a>
+			<p>Here's Amarok 2 and the new KMail klient. Both not yet at thier best but with great potential, I'm sure.</p>
+		</div>
+
 		<div class="clear"></div>
 		
 		<div id="left">
@@ -91,13 +152,17 @@
 				<p><ul>
 				<li>K Desktop Environment 4.2.0</li>
 				<li>KOffice 2.0 Beta 6</li>
+				<li>Amarok 2.1 svn</li>
+				<li>K3b 1.95 svn</li>
 				<li>Linux 2.6.27.11</li>
 				<li>NetworkManager 0.7</li>
 				<li>Akonadi 1.1.1</li>
 				<li>Phonon 4.3.0</li>
+				<li>Soprano 2.2.1</li>
 				<li>Xserver 1.5.3</li>
 				<li>IceWeasel 3.0.5</li>
 				<li>Opera 9.63</li>
+				<li><a href="rpmqa-RC4.txt">full list</a></li>
 				</ul></p>
 			</div>
 			<div id="footer">

Modified: livecd/kde4/html/index.txt
==============================================================================
--- livecd/kde4/html/index.txt	(original)
+++ livecd/kde4/html/index.txt	Tue Feb 17 21:54:30 2009
@@ -1,5 +1,8 @@
                 <div id="left">
                         <h2><a href="">Today's featured article</a></h2>
+                        <p class="date"><span>17th</span><br />February</p>
+                        <p class="subtitle">RC4 with new features and website update</p>
+			<p>Time has come for another LiveCD Release Candidate. Version 4 includes some really cool features. One of them is the "Copy to RAM" feature. If you're one of those lucky ones who have enough RAM to put the whole CD into it you can now choose the "RAM" option at the boot menu. Be patient as the copy process may take some time and when it's finished your CD pops out automatically. Other new features are mostly software packages: we now have Amarok 2 on the CD, K3b and Partitionmanager. Of course underlaying software was upgraded too.<br/><br/>Thanks to Piotr 'vip' Budny this site has seen some changes too. We now have a JavaScript based screenshots gallery which is also powered by Lightbox2. On the bottom you can find a full software list with what's on the CD - this may help you decide whether to download it or not.<br/><br/>I hope you enjoy this relase as much as I do. Regards!<br/><br/>P.S.<br/>Please note that Anaconda is alpha software and it's not really up to me wh
 eter it works or not, so please do not send me bug reports about Anaconda.</p>
                         <p class="date"><span>3rd</span><br />February</p>
                         <p class="subtitle">RC3 gets updated (build 2009020303)</p>
                         <p>Although RC3's main goal were fixes, a tiny bug found it's way to the release. Thanks to Jacek Krukowski it's now been removed and a little feature came across too. To make reporting bugs easier for you, there's now a KDialog based application called "Report a bug" on the desktop. Run it and you're good to go and report your bug. Please do no longer use my mail to do it. Thanks!</p>

Added: livecd/kde4/html/js/builder.js
==============================================================================
--- (empty file)
+++ livecd/kde4/html/js/builder.js	Tue Feb 17 21:54:30 2009
@@ -0,0 +1,136 @@
+// script.aculo.us builder.js v1.8.1, Thu Jan 03 22:07:12 -0500 2008
+
+// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+//
+// script.aculo.us is freely distributable under the terms of an MIT-style license.
+// For details, see the script.aculo.us web site: http://script.aculo.us/
+
+var Builder = {
+  NODEMAP: {
+    AREA: 'map',
+    CAPTION: 'table',
+    COL: 'table',
+    COLGROUP: 'table',
+    LEGEND: 'fieldset',
+    OPTGROUP: 'select',
+    OPTION: 'select',
+    PARAM: 'object',
+    TBODY: 'table',
+    TD: 'table',
+    TFOOT: 'table',
+    TH: 'table',
+    THEAD: 'table',
+    TR: 'table'
+  },
+  // note: For Firefox < 1.5, OPTION and OPTGROUP tags are currently broken,
+  //       due to a Firefox bug
+  node: function(elementName) {
+    elementName = elementName.toUpperCase();
+    
+    // try innerHTML approach
+    var parentTag = this.NODEMAP[elementName] || 'div';
+    var parentElement = document.createElement(parentTag);
+    try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
+      parentElement.innerHTML = "<" + elementName + "></" + elementName + ">";
+    } catch(e) {}
+    var element = parentElement.firstChild || null;
+      
+    // see if browser added wrapping tags
+    if(element && (element.tagName.toUpperCase() != elementName))
+      element = element.getElementsByTagName(elementName)[0];
+    
+    // fallback to createElement approach
+    if(!element) element = document.createElement(elementName);
+    
+    // abort if nothing could be created
+    if(!element) return;
+
+    // attributes (or text)
+    if(arguments[1])
+      if(this._isStringOrNumber(arguments[1]) ||
+        (arguments[1] instanceof Array) ||
+        arguments[1].tagName) {
+          this._children(element, arguments[1]);
+        } else {
+          var attrs = this._attributes(arguments[1]);
+          if(attrs.length) {
+            try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707
+              parentElement.innerHTML = "<" +elementName + " " +
+                attrs + "></" + elementName + ">";
+            } catch(e) {}
+            element = parentElement.firstChild || null;
+            // workaround firefox 1.0.X bug
+            if(!element) {
+              element = document.createElement(elementName);
+              for(attr in arguments[1]) 
+                element[attr == 'class' ? 'className' : attr] = arguments[1][attr];
+            }
+            if(element.tagName.toUpperCase() != elementName)
+              element = parentElement.getElementsByTagName(elementName)[0];
+          }
+        } 
+
+    // text, or array of children
+    if(arguments[2])
+      this._children(element, arguments[2]);
+
+     return element;
+  },
+  _text: function(text) {
+     return document.createTextNode(text);
+  },
+
+  ATTR_MAP: {
+    'className': 'class',
+    'htmlFor': 'for'
+  },
+
+  _attributes: function(attributes) {
+    var attrs = [];
+    for(attribute in attributes)
+      attrs.push((attribute in this.ATTR_MAP ? this.ATTR_MAP[attribute] : attribute) +
+          '="' + attributes[attribute].toString().escapeHTML().gsub(/"/,'&quot;') + '"');
+    return attrs.join(" ");
+  },
+  _children: function(element, children) {
+    if(children.tagName) {
+      element.appendChild(children);
+      return;
+    }
+    if(typeof children=='object') { // array can hold nodes and text
+      children.flatten().each( function(e) {
+        if(typeof e=='object')
+          element.appendChild(e)
+        else
+          if(Builder._isStringOrNumber(e))
+            element.appendChild(Builder._text(e));
+      });
+    } else
+      if(Builder._isStringOrNumber(children))
+        element.appendChild(Builder._text(children));
+  },
+  _isStringOrNumber: function(param) {
+    return(typeof param=='string' || typeof param=='number');
+  },
+  build: function(html) {
+    var element = this.node('div');
+    $(element).update(html.strip());
+    return element.down();
+  },
+  dump: function(scope) { 
+    if(typeof scope != 'object' && typeof scope != 'function') scope = window; //global scope 
+  
+    var tags = ("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY " +
+      "BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET " +
+      "FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+
+      "KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+
+      "PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+
+      "TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);
+  
+    tags.each( function(tag){ 
+      scope[tag] = function() { 
+        return Builder.node.apply(Builder, [tag].concat($A(arguments)));  
+      } 
+    });
+  }
+}

Added: livecd/kde4/html/js/effects.js
==============================================================================
--- (empty file)
+++ livecd/kde4/html/js/effects.js	Tue Feb 17 21:54:30 2009
@@ -0,0 +1,1122 @@
+// script.aculo.us effects.js v1.8.1, Thu Jan 03 22:07:12 -0500 2008
+
+// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+// Contributors:
+//  Justin Palmer (http://encytemedia.com/)
+//  Mark Pilgrim (http://diveintomark.org/)
+//  Martin Bialasinki
+// 
+// script.aculo.us is freely distributable under the terms of an MIT-style license.
+// For details, see the script.aculo.us web site: http://script.aculo.us/ 
+
+// converts rgb() and #xxx to #xxxxxx format,  
+// returns self (or first argument) if not convertable  
+String.prototype.parseColor = function() {  
+  var color = '#';
+  if (this.slice(0,4) == 'rgb(') {  
+    var cols = this.slice(4,this.length-1).split(',');  
+    var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);  
+  } else {  
+    if (this.slice(0,1) == '#') {  
+      if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();  
+      if (this.length==7) color = this.toLowerCase();  
+    }  
+  }  
+  return (color.length==7 ? color : (arguments[0] || this));  
+};
+
+/*--------------------------------------------------------------------------*/
+
+Element.collectTextNodes = function(element) {  
+  return $A($(element).childNodes).collect( function(node) {
+    return (node.nodeType==3 ? node.nodeValue : 
+      (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));
+  }).flatten().join('');
+};
+
+Element.collectTextNodesIgnoreClass = function(element, className) {  
+  return $A($(element).childNodes).collect( function(node) {
+    return (node.nodeType==3 ? node.nodeValue : 
+      ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? 
+        Element.collectTextNodesIgnoreClass(node, className) : ''));
+  }).flatten().join('');
+};
+
+Element.setContentZoom = function(element, percent) {
+  element = $(element);  
+  element.setStyle({fontSize: (percent/100) + 'em'});   
+  if (Prototype.Browser.WebKit) window.scrollBy(0,0);
+  return element;
+};
+
+Element.getInlineOpacity = function(element){
+  return $(element).style.opacity || '';
+};
+
+Element.forceRerendering = function(element) {
+  try {
+    element = $(element);
+    var n = document.createTextNode(' ');
+    element.appendChild(n);
+    element.removeChild(n);
+  } catch(e) { }
+};
+
+/*--------------------------------------------------------------------------*/
+
+var Effect = {
+  _elementDoesNotExistError: {
+    name: 'ElementDoesNotExistError',
+    message: 'The specified DOM element does not exist, but is required for this effect to operate'
+  },
+  Transitions: {
+    linear: Prototype.K,
+    sinoidal: function(pos) {
+      return (-Math.cos(pos*Math.PI)/2) + 0.5;
+    },
+    reverse: function(pos) {
+      return 1-pos;
+    },
+    flicker: function(pos) {
+      var pos = ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4;
+      return pos > 1 ? 1 : pos;
+    },
+    wobble: function(pos) {
+      return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5;
+    },
+    pulse: function(pos, pulses) { 
+      pulses = pulses || 5; 
+      return (
+        ((pos % (1/pulses)) * pulses).round() == 0 ? 
+              ((pos * pulses * 2) - (pos * pulses * 2).floor()) : 
+          1 - ((pos * pulses * 2) - (pos * pulses * 2).floor())
+        );
+    },
+    spring: function(pos) { 
+      return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6)); 
+    },
+    none: function(pos) {
+      return 0;
+    },
+    full: function(pos) {
+      return 1;
+    }
+  },
+  DefaultOptions: {
+    duration:   1.0,   // seconds
+    fps:        100,   // 100= assume 66fps max.
+    sync:       false, // true for combining
+    from:       0.0,
+    to:         1.0,
+    delay:      0.0,
+    queue:      'parallel'
+  },
+  tagifyText: function(element) {
+    var tagifyStyle = 'position:relative';
+    if (Prototype.Browser.IE) tagifyStyle += ';zoom:1';
+    
+    element = $(element);
+    $A(element.childNodes).each( function(child) {
+      if (child.nodeType==3) {
+        child.nodeValue.toArray().each( function(character) {
+          element.insertBefore(
+            new Element('span', {style: tagifyStyle}).update(
+              character == ' ' ? String.fromCharCode(160) : character), 
+              child);
+        });
+        Element.remove(child);
+      }
+    });
+  },
+  multiple: function(element, effect) {
+    var elements;
+    if (((typeof element == 'object') || 
+        Object.isFunction(element)) && 
+       (element.length))
+      elements = element;
+    else
+      elements = $(element).childNodes;
+      
+    var options = Object.extend({
+      speed: 0.1,
+      delay: 0.0
+    }, arguments[2] || { });
+    var masterDelay = options.delay;
+
+    $A(elements).each( function(element, index) {
+      new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay }));
+    });
+  },
+  PAIRS: {
+    'slide':  ['SlideDown','SlideUp'],
+    'blind':  ['BlindDown','BlindUp'],
+    'appear': ['Appear','Fade']
+  },
+  toggle: function(element, effect) {
+    element = $(element);
+    effect = (effect || 'appear').toLowerCase();
+    var options = Object.extend({
+      queue: { position:'end', scope:(element.id || 'global'), limit: 1 }
+    }, arguments[2] || { });
+    Effect[element.visible() ? 
+      Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options);
+  }
+};
+
+Effect.DefaultOptions.transition = Effect.Transitions.sinoidal;
+
+/* ------------- core effects ------------- */
+
+Effect.ScopedQueue = Class.create(Enumerable, {
+  initialize: function() {
+    this.effects  = [];
+    this.interval = null;    
+  },
+  _each: function(iterator) {
+    this.effects._each(iterator);
+  },
+  add: function(effect) {
+    var timestamp = new Date().getTime();
+    
+    var position = Object.isString(effect.options.queue) ? 
+      effect.options.queue : effect.options.queue.position;
+    
+    switch(position) {
+      case 'front':
+        // move unstarted effects after this effect  
+        this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {
+            e.startOn  += effect.finishOn;
+            e.finishOn += effect.finishOn;
+          });
+        break;
+      case 'with-last':
+        timestamp = this.effects.pluck('startOn').max() || timestamp;
+        break;
+      case 'end':
+        // start effect after last queued effect has finished
+        timestamp = this.effects.pluck('finishOn').max() || timestamp;
+        break;
+    }
+    
+    effect.startOn  += timestamp;
+    effect.finishOn += timestamp;
+
+    if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))
+      this.effects.push(effect);
+    
+    if (!this.interval)
+      this.interval = setInterval(this.loop.bind(this), 15);
+  },
+  remove: function(effect) {
+    this.effects = this.effects.reject(function(e) { return e==effect });
+    if (this.effects.length == 0) {
+      clearInterval(this.interval);
+      this.interval = null;
+    }
+  },
+  loop: function() {
+    var timePos = new Date().getTime();
+    for(var i=0, len=this.effects.length;i<len;i++) 
+      this.effects[i] && this.effects[i].loop(timePos);
+  }
+});
+
+Effect.Queues = {
+  instances: $H(),
+  get: function(queueName) {
+    if (!Object.isString(queueName)) return queueName;
+    
+    return this.instances.get(queueName) ||
+      this.instances.set(queueName, new Effect.ScopedQueue());
+  }
+};
+Effect.Queue = Effect.Queues.get('global');
+
+Effect.Base = Class.create({
+  position: null,
+  start: function(options) {
+    function codeForEvent(options,eventName){
+      return (
+        (options[eventName+'Internal'] ? 'this.options.'+eventName+'Internal(this);' : '') +
+        (options[eventName] ? 'this.options.'+eventName+'(this);' : '')
+      );
+    }
+    if (options && options.transition === false) options.transition = Effect.Transitions.linear;
+    this.options      = Object.extend(Object.extend({ },Effect.DefaultOptions), options || { });
+    this.currentFrame = 0;
+    this.state        = 'idle';
+    this.startOn      = this.options.delay*1000;
+    this.finishOn     = this.startOn+(this.options.duration*1000);
+    this.fromToDelta  = this.options.to-this.options.from;
+    this.totalTime    = this.finishOn-this.startOn;
+    this.totalFrames  = this.options.fps*this.options.duration;
+    
+    eval('this.render = function(pos){ '+
+      'if (this.state=="idle"){this.state="running";'+
+      codeForEvent(this.options,'beforeSetup')+
+      (this.setup ? 'this.setup();':'')+ 
+      codeForEvent(this.options,'afterSetup')+
+      '};if (this.state=="running"){'+
+      'pos=this.options.transition(pos)*'+this.fromToDelta+'+'+this.options.from+';'+
+      'this.position=pos;'+
+      codeForEvent(this.options,'beforeUpdate')+
+      (this.update ? 'this.update(pos);':'')+
+      codeForEvent(this.options,'afterUpdate')+
+      '}}');
+    
+    this.event('beforeStart');
+    if (!this.options.sync)
+      Effect.Queues.get(Object.isString(this.options.queue) ? 
+        'global' : this.options.queue.scope).add(this);
+  },
+  loop: function(timePos) {
+    if (timePos >= this.startOn) {
+      if (timePos >= this.finishOn) {
+        this.render(1.0);
+        this.cancel();
+        this.event('beforeFinish');
+        if (this.finish) this.finish(); 
+        this.event('afterFinish');
+        return;  
+      }
+      var pos   = (timePos - this.startOn) / this.totalTime,
+          frame = (pos * this.totalFrames).round();
+      if (frame > this.currentFrame) {
+        this.render(pos);
+        this.currentFrame = frame;
+      }
+    }
+  },
+  cancel: function() {
+    if (!this.options.sync)
+      Effect.Queues.get(Object.isString(this.options.queue) ? 
+        'global' : this.options.queue.scope).remove(this);
+    this.state = 'finished';
+  },
+  event: function(eventName) {
+    if (this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);
+    if (this.options[eventName]) this.options[eventName](this);
+  },
+  inspect: function() {
+    var data = $H();
+    for(property in this)
+      if (!Object.isFunction(this[property])) data.set(property, this[property]);
+    return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>';
+  }
+});
+
+Effect.Parallel = Class.create(Effect.Base, {
+  initialize: function(effects) {
+    this.effects = effects || [];
+    this.start(arguments[1]);
+  },
+  update: function(position) {
+    this.effects.invoke('render', position);
+  },
+  finish: function(position) {
+    this.effects.each( function(effect) {
+      effect.render(1.0);
+      effect.cancel();
+      effect.event('beforeFinish');
+      if (effect.finish) effect.finish(position);
+      effect.event('afterFinish');
+    });
+  }
+});
+
+Effect.Tween = Class.create(Effect.Base, {
+  initialize: function(object, from, to) {
+    object = Object.isString(object) ? $(object) : object;
+    var args = $A(arguments), method = args.last(), 
+      options = args.length == 5 ? args[3] : null;
+    this.method = Object.isFunction(method) ? method.bind(object) :
+      Object.isFunction(object[method]) ? object[method].bind(object) : 
+      function(value) { object[method] = value };
+    this.start(Object.extend({ from: from, to: to }, options || { }));
+  },
+  update: function(position) {
+    this.method(position);
+  }
+});
+
+Effect.Event = Class.create(Effect.Base, {
+  initialize: function() {
+    this.start(Object.extend({ duration: 0 }, arguments[0] || { }));
+  },
+  update: Prototype.emptyFunction
+});
+
+Effect.Opacity = Class.create(Effect.Base, {
+  initialize: function(element) {
+    this.element = $(element);
+    if (!this.element) throw(Effect._elementDoesNotExistError);
+    // make this work on IE on elements without 'layout'
+    if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))
+      this.element.setStyle({zoom: 1});
+    var options = Object.extend({
+      from: this.element.getOpacity() || 0.0,
+      to:   1.0
+    }, arguments[1] || { });
+    this.start(options);
+  },
+  update: function(position) {
+    this.element.setOpacity(position);
+  }
+});
+
+Effect.Move = Class.create(Effect.Base, {
+  initialize: function(element) {
+    this.element = $(element);
+    if (!this.element) throw(Effect._elementDoesNotExistError);
+    var options = Object.extend({
+      x:    0,
+      y:    0,
+      mode: 'relative'
+    }, arguments[1] || { });
+    this.start(options);
+  },
+  setup: function() {
+    this.element.makePositioned();
+    this.originalLeft = parseFloat(this.element.getStyle('left') || '0');
+    this.originalTop  = parseFloat(this.element.getStyle('top')  || '0');
+    if (this.options.mode == 'absolute') {
+      this.options.x = this.options.x - this.originalLeft;
+      this.options.y = this.options.y - this.originalTop;
+    }
+  },
+  update: function(position) {
+    this.element.setStyle({
+      left: (this.options.x  * position + this.originalLeft).round() + 'px',
+      top:  (this.options.y  * position + this.originalTop).round()  + 'px'
+    });
+  }
+});
+
+// for backwards compatibility
+Effect.MoveBy = function(element, toTop, toLeft) {
+  return new Effect.Move(element, 
+    Object.extend({ x: toLeft, y: toTop }, arguments[3] || { }));
+};
+
+Effect.Scale = Class.create(Effect.Base, {
+  initialize: function(element, percent) {
+    this.element = $(element);
+    if (!this.element) throw(Effect._elementDoesNotExistError);
+    var options = Object.extend({
+      scaleX: true,
+      scaleY: true,
+      scaleContent: true,
+      scaleFromCenter: false,
+      scaleMode: 'box',        // 'box' or 'contents' or { } with provided values
+      scaleFrom: 100.0,
+      scaleTo:   percent
+    }, arguments[2] || { });
+    this.start(options);
+  },
+  setup: function() {
+    this.restoreAfterFinish = this.options.restoreAfterFinish || false;
+    this.elementPositioning = this.element.getStyle('position');
+    
+    this.originalStyle = { };
+    ['top','left','width','height','fontSize'].each( function(k) {
+      this.originalStyle[k] = this.element.style[k];
+    }.bind(this));
+      
+    this.originalTop  = this.element.offsetTop;
+    this.originalLeft = this.element.offsetLeft;
+    
+    var fontSize = this.element.getStyle('font-size') || '100%';
+    ['em','px','%','pt'].each( function(fontSizeType) {
+      if (fontSize.indexOf(fontSizeType)>0) {
+        this.fontSize     = parseFloat(fontSize);
+        this.fontSizeType = fontSizeType;
+      }
+    }.bind(this));
+    
+    this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;
+    
+    this.dims = null;
+    if (this.options.scaleMode=='box')
+      this.dims = [this.element.offsetHeight, this.element.offsetWidth];
+    if (/^content/.test(this.options.scaleMode))
+      this.dims = [this.element.scrollHeight, this.element.scrollWidth];
+    if (!this.dims)
+      this.dims = [this.options.scaleMode.originalHeight,
+                   this.options.scaleMode.originalWidth];
+  },
+  update: function(position) {
+    var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);
+    if (this.options.scaleContent && this.fontSize)
+      this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });
+    this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);
+  },
+  finish: function(position) {
+    if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle);
+  },
+  setDimensions: function(height, width) {
+    var d = { };
+    if (this.options.scaleX) d.width = width.round() + 'px';
+    if (this.options.scaleY) d.height = height.round() + 'px';
+    if (this.options.scaleFromCenter) {
+      var topd  = (height - this.dims[0])/2;
+      var leftd = (width  - this.dims[1])/2;
+      if (this.elementPositioning == 'absolute') {
+        if (this.options.scaleY) d.top = this.originalTop-topd + 'px';
+        if (this.options.scaleX) d.left = this.originalLeft-leftd + 'px';
+      } else {
+        if (this.options.scaleY) d.top = -topd + 'px';
+        if (this.options.scaleX) d.left = -leftd + 'px';
+      }
+    }
+    this.element.setStyle(d);
+  }
+});
+
+Effect.Highlight = Class.create(Effect.Base, {
+  initialize: function(element) {
+    this.element = $(element);
+    if (!this.element) throw(Effect._elementDoesNotExistError);
+    var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || { });
+    this.start(options);
+  },
+  setup: function() {
+    // Prevent executing on elements not in the layout flow
+    if (this.element.getStyle('display')=='none') { this.cancel(); return; }
+    // Disable background image during the effect
+    this.oldStyle = { };
+    if (!this.options.keepBackgroundImage) {
+      this.oldStyle.backgroundImage = this.element.getStyle('background-image');
+      this.element.setStyle({backgroundImage: 'none'});
+    }
+    if (!this.options.endcolor)
+      this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');
+    if (!this.options.restorecolor)
+      this.options.restorecolor = this.element.getStyle('background-color');
+    // init color calculations
+    this._base  = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));
+    this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this));
+  },
+  update: function(position) {
<<diff output has been trimmed to 500 lines, 623 line(s) remained.>>

Added: livecd/kde4/html/js/lightbox.js
==============================================================================
--- (empty file)
+++ livecd/kde4/html/js/lightbox.js	Tue Feb 17 21:54:30 2009
@@ -0,0 +1,497 @@
+// -----------------------------------------------------------------------------------
+//
+//	Lightbox v2.04
+//	by Lokesh Dhakar - http://www.lokeshdhakar.com
+//	Last Modification: 2/9/08
+//
+//	For more information, visit:
+//	http://lokeshdhakar.com/projects/lightbox2/
+//
+//	Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/
+//  	- Free for use in both personal and commercial projects
+//		- Attribution requires leaving author name, author link, and the license info intact.
+//	
+//  Thanks: Scott Upton(uptonic.com), Peter-Paul Koch(quirksmode.com), and Thomas Fuchs(mir.aculo.us) for ideas, libs, and snippets.
+//  		Artemy Tregubenko (arty.name) for cleanup and help in updating to latest ver of proto-aculous.
+//
+// -----------------------------------------------------------------------------------
+/*
+
+    Table of Contents
+    -----------------
+    Configuration
+
+    Lightbox Class Declaration
+    - initialize()
+    - updateImageList()
+    - start()
+    - changeImage()
+    - resizeImageContainer()
+    - showImage()
+    - updateDetails()
+    - updateNav()
+    - enableKeyboardNav()
+    - disableKeyboardNav()
+    - keyboardAction()
+    - preloadNeighborImages()
+    - end()
+    
+    Function Calls
+    - document.observe()
+   
+*/
+// -----------------------------------------------------------------------------------
+
+//
+//  Configurationl
+//
+LightboxOptions = Object.extend({
+    fileLoadingImage:        'images/loading.gif',     
+    fileBottomNavCloseImage: 'images/closelabel.gif',
+
+    overlayOpacity: 0.8,   // controls transparency of shadow overlay
+
+    animate: true,         // toggles resizing animations
+    resizeSpeed: 7,        // controls the speed of the image resizing animations (1=slowest and 10=fastest)
+
+    borderSize: 10,         //if you adjust the padding in the CSS, you will need to update this variable
+
+	// When grouping images this is used to write: Image # of #.
+	// Change it for non-english localization
+	labelImage: "Image",
+	labelOf: "of"
+}, window.LightboxOptions || {});
+
+// -----------------------------------------------------------------------------------
+
+var Lightbox = Class.create();
+
+Lightbox.prototype = {
+    imageArray: [],
+    activeImage: undefined,
+    
+    // initialize()
+    // Constructor runs on completion of the DOM loading. Calls updateImageList and then
+    // the function inserts html at the bottom of the page which is used to display the shadow 
+    // overlay and the image container.
+    //
+    initialize: function() {    
+        
+        this.updateImageList();
+        
+        this.keyboardAction = this.keyboardAction.bindAsEventListener(this);
+
+        if (LightboxOptions.resizeSpeed > 10) LightboxOptions.resizeSpeed = 10;
+        if (LightboxOptions.resizeSpeed < 1)  LightboxOptions.resizeSpeed = 1;
+
+	    this.resizeDuration = LightboxOptions.animate ? ((11 - LightboxOptions.resizeSpeed) * 0.15) : 0;
+	    this.overlayDuration = LightboxOptions.animate ? 0.2 : 0;  // shadow fade in/out duration
+
+        // When Lightbox starts it will resize itself from 250 by 250 to the current image dimension.
+        // If animations are turned off, it will be hidden as to prevent a flicker of a
+        // white 250 by 250 box.
+        var size = (LightboxOptions.animate ? 250 : 1) + 'px';
+        
+
+        // Code inserts html at the bottom of the page that looks similar to this:
+        //
+        //  <div id="overlay"></div>
+        //  <div id="lightbox">
+        //      <div id="outerImageContainer">
+        //          <div id="imageContainer">
+        //              <img id="lightboxImage">
+        //              <div style="" id="hoverNav">
+        //                  <a href="#" id="prevLink"></a>
+        //                  <a href="#" id="nextLink"></a>
+        //              </div>
+        //              <div id="loading">
+        //                  <a href="#" id="loadingLink">
+        //                      <img src="images/loading.gif">
+        //                  </a>
+        //              </div>
+        //          </div>
+        //      </div>
+        //      <div id="imageDataContainer">
+        //          <div id="imageData">
+        //              <div id="imageDetails">
+        //                  <span id="caption"></span>
+        //                  <span id="numberDisplay"></span>
+        //              </div>
+        //              <div id="bottomNav">
+        //                  <a href="#" id="bottomNavClose">
+        //                      <img src="images/close.gif">
+        //                  </a>
+        //              </div>
+        //          </div>
+        //      </div>
+        //  </div>
+
+
+        var objBody = $$('body')[0];
+
+		objBody.appendChild(Builder.node('div',{id:'overlay'}));
+	
+        objBody.appendChild(Builder.node('div',{id:'lightbox'}, [
+            Builder.node('div',{id:'outerImageContainer'}, 
+                Builder.node('div',{id:'imageContainer'}, [
+                    Builder.node('img',{id:'lightboxImage'}), 
+                    Builder.node('div',{id:'hoverNav'}, [
+                        Builder.node('a',{id:'prevLink', href: '#' }),
+                        Builder.node('a',{id:'nextLink', href: '#' })
+                    ]),
+                    Builder.node('div',{id:'loading'}, 
+                        Builder.node('a',{id:'loadingLink', href: '#' }, 
+                            Builder.node('img', {src: LightboxOptions.fileLoadingImage})
+                        )
+                    )
+                ])
+            ),
+            Builder.node('div', {id:'imageDataContainer'},
+                Builder.node('div',{id:'imageData'}, [
+                    Builder.node('div',{id:'imageDetails'}, [
+                        Builder.node('span',{id:'caption'}),
+                        Builder.node('span',{id:'numberDisplay'})
+                    ]),
+                    Builder.node('div',{id:'bottomNav'},
+                        Builder.node('a',{id:'bottomNavClose', href: '#' },
+                            Builder.node('img', { src: LightboxOptions.fileBottomNavCloseImage })
+                        )
+                    )
+                ])
+            )
+        ]));
+
+
+		$('overlay').hide().observe('click', (function() { this.end(); }).bind(this));
+		$('lightbox').hide().observe('click', (function(event) { if (event.element().id == 'lightbox') this.end(); }).bind(this));
+		$('outerImageContainer').setStyle({ width: size, height: size });
+		$('prevLink').observe('click', (function(event) { event.stop(); this.changeImage(this.activeImage - 1); }).bindAsEventListener(this));
+		$('nextLink').observe('click', (function(event) { event.stop(); this.changeImage(this.activeImage + 1); }).bindAsEventListener(this));
+		$('loadingLink').observe('click', (function(event) { event.stop(); this.end(); }).bind(this));
+		$('bottomNavClose').observe('click', (function(event) { event.stop(); this.end(); }).bind(this));
+
+        var th = this;
+        (function(){
+            var ids = 
+                'overlay lightbox outerImageContainer imageContainer lightboxImage hoverNav prevLink nextLink loading loadingLink ' + 
+                'imageDataContainer imageData imageDetails caption numberDisplay bottomNav bottomNavClose';   
+            $w(ids).each(function(id){ th[id] = $(id); });
+        }).defer();
+    },
+
+    //
+    // updateImageList()
+    // Loops through anchor tags looking for 'lightbox' references and applies onclick
+    // events to appropriate links. You can rerun after dynamically adding images w/ajax.
+    //
+    updateImageList: function() {   
+        this.updateImageList = Prototype.emptyFunction;
+
+        document.observe('click', (function(event){
+            var target = event.findElement('a[rel^=lightbox]') || event.findElement('area[rel^=lightbox]');
+            if (target) {
+                event.stop();
+                this.start(target);
+            }
+        }).bind(this));
+    },
+    
+    //
+    //  start()
+    //  Display overlay and lightbox. If image is part of a set, add siblings to imageArray.
+    //
+    start: function(imageLink) {    
+
+        $$('select', 'object', 'embed').each(function(node){ node.style.visibility = 'hidden' });
+
+        // stretch overlay to fill page and fade in
+        var arrayPageSize = this.getPageSize();
+        $('overlay').setStyle({ width: arrayPageSize[0] + 'px', height: arrayPageSize[1] + 'px' });
+
+        new Effect.Appear(this.overlay, { duration: this.overlayDuration, from: 0.0, to: LightboxOptions.overlayOpacity });
+
+        this.imageArray = [];
+        var imageNum = 0;       
+
+        if ((imageLink.rel == 'lightbox')){
+            // if image is NOT part of a set, add single image to imageArray
+            this.imageArray.push([imageLink.href, imageLink.title]);         
+        } else {
+            // if image is part of a set..
+            this.imageArray = 
+                $$(imageLink.tagName + '[href][rel="' + imageLink.rel + '"]').
+                collect(function(anchor){ return [anchor.href, anchor.title]; }).
+                uniq();
+            
+            while (this.imageArray[imageNum][0] != imageLink.href) { imageNum++; }
+        }
+
+        // calculate top and left offset for the lightbox 
+        var arrayPageScroll = document.viewport.getScrollOffsets();
+        var lightboxTop = arrayPageScroll[1] + (document.viewport.getHeight() / 10);
+        var lightboxLeft = arrayPageScroll[0];
+        this.lightbox.setStyle({ top: lightboxTop + 'px', left: lightboxLeft + 'px' }).show();
+        
+        this.changeImage(imageNum);
+    },
+
+    //
+    //  changeImage()
+    //  Hide most elements and preload image in preparation for resizing image container.
+    //
+    changeImage: function(imageNum) {   
+        
+        this.activeImage = imageNum; // update global var
+
+        // hide elements during transition
+        if (LightboxOptions.animate) this.loading.show();
+        this.lightboxImage.hide();
+        this.hoverNav.hide();
+        this.prevLink.hide();
+        this.nextLink.hide();
+		// HACK: Opera9 does not currently support scriptaculous opacity and appear fx
+        this.imageDataContainer.setStyle({opacity: .0001});
+        this.numberDisplay.hide();      
+        
+        var imgPreloader = new Image();
+        
+        // once image is preloaded, resize image container
+
+
+        imgPreloader.onload = (function(){
+            this.lightboxImage.src = this.imageArray[this.activeImage][0];
+            this.resizeImageContainer(imgPreloader.width, imgPreloader.height);
+        }).bind(this);
+        imgPreloader.src = this.imageArray[this.activeImage][0];
+    },
+
+    //
+    //  resizeImageContainer()
+    //
+    resizeImageContainer: function(imgWidth, imgHeight) {
+
+        // get current width and height
+        var widthCurrent  = this.outerImageContainer.getWidth();
+        var heightCurrent = this.outerImageContainer.getHeight();
+
+        // get new width and height
+        var widthNew  = (imgWidth  + LightboxOptions.borderSize * 2);
+        var heightNew = (imgHeight + LightboxOptions.borderSize * 2);
+
+        // scalars based on change from old to new
+        var xScale = (widthNew  / widthCurrent)  * 100;
+        var yScale = (heightNew / heightCurrent) * 100;
+
+        // calculate size difference between new and old image, and resize if necessary
+        var wDiff = widthCurrent - widthNew;
+        var hDiff = heightCurrent - heightNew;
+
+        if (hDiff != 0) new Effect.Scale(this.outerImageContainer, yScale, {scaleX: false, duration: this.resizeDuration, queue: 'front'}); 
+        if (wDiff != 0) new Effect.Scale(this.outerImageContainer, xScale, {scaleY: false, duration: this.resizeDuration, delay: this.resizeDuration}); 
+
+        // if new and old image are same size and no scaling transition is necessary, 
+        // do a quick pause to prevent image flicker.
+        var timeout = 0;
+        if ((hDiff == 0) && (wDiff == 0)){
+            timeout = 100;
+            if (Prototype.Browser.IE) timeout = 250;   
+        }
+
+        (function(){
+            this.prevLink.setStyle({ height: imgHeight + 'px' });
+            this.nextLink.setStyle({ height: imgHeight + 'px' });
+            this.imageDataContainer.setStyle({ width: widthNew + 'px' });
+
+            this.showImage();
+        }).bind(this).delay(timeout / 1000);
+    },
+    
+    //
+    //  showImage()
+    //  Display image and begin preloading neighbors.
+    //
+    showImage: function(){
+        this.loading.hide();
+        new Effect.Appear(this.lightboxImage, { 
+            duration: this.resizeDuration, 
+            queue: 'end', 
+            afterFinish: (function(){ this.updateDetails(); }).bind(this) 
+        });
+        this.preloadNeighborImages();
+    },
+
+    //
+    //  updateDetails()
+    //  Display caption, image number, and bottom nav.
+    //
+    updateDetails: function() {
+    
+        // if caption is not null
+        if (this.imageArray[this.activeImage][1] != ""){
+            this.caption.update(this.imageArray[this.activeImage][1]).show();
+        }
+        
+        // if image is part of set display 'Image x of x' 
+        if (this.imageArray.length > 1){
+            this.numberDisplay.update( LightboxOptions.labelImage + ' ' + (this.activeImage + 1) + ' ' + LightboxOptions.labelOf + '  ' + this.imageArray.length).show();
+        }
+
+        new Effect.Parallel(
+            [ 
+                new Effect.SlideDown(this.imageDataContainer, { sync: true, duration: this.resizeDuration, from: 0.0, to: 1.0 }), 
+                new Effect.Appear(this.imageDataContainer, { sync: true, duration: this.resizeDuration }) 
+            ], 
+            { 
+                duration: this.resizeDuration, 
+                afterFinish: (function() {
+	                // update overlay size and update nav
+	                var arrayPageSize = this.getPageSize();
+	                this.overlay.setStyle({ height: arrayPageSize[1] + 'px' });
+	                this.updateNav();
+                }).bind(this)
+            } 
+        );
+    },
+
+    //
+    //  updateNav()
+    //  Display appropriate previous and next hover navigation.
+    //
+    updateNav: function() {
+
+        this.hoverNav.show();               
+
+        // if not first image in set, display prev image button
+        if (this.activeImage > 0) this.prevLink.show();
+
+        // if not last image in set, display next image button
+        if (this.activeImage < (this.imageArray.length - 1)) this.nextLink.show();
+        
+        this.enableKeyboardNav();
+    },
+
+    //
+    //  enableKeyboardNav()
+    //
+    enableKeyboardNav: function() {
+        document.observe('keydown', this.keyboardAction); 
+    },
+
+    //
+    //  disableKeyboardNav()
+    //
+    disableKeyboardNav: function() {
+        document.stopObserving('keydown', this.keyboardAction); 
+    },
+
+    //
+    //  keyboardAction()
+    //
+    keyboardAction: function(event) {
+        var keycode = event.keyCode;
+
+        var escapeKey;
+        if (event.DOM_VK_ESCAPE) {  // mozilla
+            escapeKey = event.DOM_VK_ESCAPE;
+        } else { // ie
+            escapeKey = 27;
+        }
+
+        var key = String.fromCharCode(keycode).toLowerCase();
+        
+        if (key.match(/x|o|c/) || (keycode == escapeKey)){ // close lightbox
+            this.end();
+        } else if ((key == 'p') || (keycode == 37)){ // display previous image
+            if (this.activeImage != 0){
+                this.disableKeyboardNav();
+                this.changeImage(this.activeImage - 1);
+            }
+        } else if ((key == 'n') || (keycode == 39)){ // display next image
+            if (this.activeImage != (this.imageArray.length - 1)){
+                this.disableKeyboardNav();
+                this.changeImage(this.activeImage + 1);
+            }
+        }
+    },
+
+    //
+    //  preloadNeighborImages()
+    //  Preload previous and next images.
+    //
+    preloadNeighborImages: function(){
+        var preloadNextImage, preloadPrevImage;
+        if (this.imageArray.length > this.activeImage + 1){
+            preloadNextImage = new Image();
+            preloadNextImage.src = this.imageArray[this.activeImage + 1][0];
+        }
+        if (this.activeImage > 0){
+            preloadPrevImage = new Image();
+            preloadPrevImage.src = this.imageArray[this.activeImage - 1][0];
+        }
+    
+    },
+
+    //
+    //  end()
+    //
+    end: function() {
+        this.disableKeyboardNav();
+        this.lightbox.hide();
+        new Effect.Fade(this.overlay, { duration: this.overlayDuration });
+        $$('select', 'object', 'embed').each(function(node){ node.style.visibility = 'visible' });
+    },
+
+    //
+    //  getPageSize()
+    //
+    getPageSize: function() {
+	        
+	     var xScroll, yScroll;
+		
+		if (window.innerHeight && window.scrollMaxY) {	
+			xScroll = window.innerWidth + window.scrollMaxX;
+			yScroll = window.innerHeight + window.scrollMaxY;
+		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
+			xScroll = document.body.scrollWidth;
+			yScroll = document.body.scrollHeight;
+		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
+			xScroll = document.body.offsetWidth;
+			yScroll = document.body.offsetHeight;
+		}
+		
+		var windowWidth, windowHeight;
+		
+		if (self.innerHeight) {	// all except Explorer
+			if(document.documentElement.clientWidth){
+				windowWidth = document.documentElement.clientWidth; 
+			} else {
+				windowWidth = self.innerWidth;
+			}
+			windowHeight = self.innerHeight;
+		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
+			windowWidth = document.documentElement.clientWidth;
+			windowHeight = document.documentElement.clientHeight;
+		} else if (document.body) { // other Explorers
+			windowWidth = document.body.clientWidth;
+			windowHeight = document.body.clientHeight;
+		}	
+		
+		// for small pages with total height less then height of the viewport
+		if(yScroll < windowHeight){
+			pageHeight = windowHeight;
+		} else { 
+			pageHeight = yScroll;
+		}
+	
+		// for small pages with total width less then width of the viewport
+		if(xScroll < windowWidth){	
+			pageWidth = xScroll;		
+		} else {
+			pageWidth = windowWidth;
+		}
+
+		return [pageWidth,pageHeight];
+	}
+}
+
+document.observe('dom:loaded', function () { new Lightbox(); });
\ No newline at end of file

Added: livecd/kde4/html/js/prototype.js
==============================================================================
--- (empty file)
+++ livecd/kde4/html/js/prototype.js	Tue Feb 17 21:54:30 2009
@@ -0,0 +1,4221 @@
+/*  Prototype JavaScript framework, version 1.6.0.2
+ *  (c) 2005-2008 Sam Stephenson
+ *
+ *  Prototype is freely distributable under the terms of an MIT-style license.
+ *  For details, see the Prototype web site: http://www.prototypejs.org/
+ *
+ *--------------------------------------------------------------------------*/
+
+var Prototype = {
+  Version: '1.6.0.2',
+
+  Browser: {
+    IE:     !!(window.attachEvent && !window.opera),
+    Opera:  !!window.opera,
+    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
+    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1,
+    MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
+  },
+
+  BrowserFeatures: {
+    XPath: !!document.evaluate,
+    ElementExtensions: !!window.HTMLElement,
+    SpecificElementExtensions:
+      document.createElement('div').__proto__ &&
+      document.createElement('div').__proto__ !==
+        document.createElement('form').__proto__
+  },
+
+  ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',
+  JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,
+
+  emptyFunction: function() { },
+  K: function(x) { return x }
+};
+
+if (Prototype.Browser.MobileSafari)
+  Prototype.BrowserFeatures.SpecificElementExtensions = false;
+
+
+/* Based on Alex Arnell's inheritance implementation. */
+var Class = {
+  create: function() {
+    var parent = null, properties = $A(arguments);
+    if (Object.isFunction(properties[0]))
+      parent = properties.shift();
+
+    function klass() {
+      this.initialize.apply(this, arguments);
+    }
+
+    Object.extend(klass, Class.Methods);
+    klass.superclass = parent;
+    klass.subclasses = [];
+
+    if (parent) {
+      var subclass = function() { };
+      subclass.prototype = parent.prototype;
+      klass.prototype = new subclass;
+      parent.subclasses.push(klass);
+    }
+
+    for (var i = 0; i < properties.length; i++)
+      klass.addMethods(properties[i]);
+
+    if (!klass.prototype.initialize)
+      klass.prototype.initialize = Prototype.emptyFunction;
+
+    klass.prototype.constructor = klass;
+
+    return klass;
+  }
+};
+
+Class.Methods = {
+  addMethods: function(source) {
+    var ancestor   = this.superclass && this.superclass.prototype;
+    var properties = Object.keys(source);
+
+    if (!Object.keys({ toString: true }).length)
+      properties.push("toString", "valueOf");
+
+    for (var i = 0, length = properties.length; i < length; i++) {
+      var property = properties[i], value = source[property];
+      if (ancestor && Object.isFunction(value) &&
+          value.argumentNames().first() == "$super") {
+        var method = value, value = Object.extend((function(m) {
+          return function() { return ancestor[m].apply(this, arguments) };
+        })(property).wrap(method), {
+          valueOf:  function() { return method },
+          toString: function() { return method.toString() }
+        });
+      }
+      this.prototype[property] = value;
+    }
+
+    return this;
+  }
+};
+
+var Abstract = { };
+
+Object.extend = function(destination, source) {
+  for (var property in source)
+    destination[property] = source[property];
+  return destination;
+};
+
+Object.extend(Object, {
+  inspect: function(object) {
+    try {
+      if (Object.isUndefined(object)) return 'undefined';
+      if (object === null) return 'null';
+      return object.inspect ? object.inspect() : String(object);
+    } catch (e) {
+      if (e instanceof RangeError) return '...';
+      throw e;
+    }
+  },
+
+  toJSON: function(object) {
+    var type = typeof object;
+    switch (type) {
+      case 'undefined':
+      case 'function':
+      case 'unknown': return;
+      case 'boolean': return object.toString();
+    }
+
+    if (object === null) return 'null';
+    if (object.toJSON) return object.toJSON();
+    if (Object.isElement(object)) return;
+
+    var results = [];
+    for (var property in object) {
+      var value = Object.toJSON(object[property]);
+      if (!Object.isUndefined(value))
+        results.push(property.toJSON() + ': ' + value);
+    }
+
+    return '{' + results.join(', ') + '}';
+  },
+
+  toQueryString: function(object) {
+    return $H(object).toQueryString();
+  },
+
+  toHTML: function(object) {
+    return object && object.toHTML ? object.toHTML() : String.interpret(object);
+  },
+
+  keys: function(object) {
+    var keys = [];
+    for (var property in object)
+      keys.push(property);
+    return keys;
+  },
+
+  values: function(object) {
+    var values = [];
+    for (var property in object)
+      values.push(object[property]);
+    return values;
+  },
+
+  clone: function(object) {
+    return Object.extend({ }, object);
+  },
+
+  isElement: function(object) {
+    return object && object.nodeType == 1;
+  },
+
+  isArray: function(object) {
+    return object != null && typeof object == "object" &&
+      'splice' in object && 'join' in object;
+  },
+
+  isHash: function(object) {
+    return object instanceof Hash;
+  },
+
+  isFunction: function(object) {
+    return typeof object == "function";
+  },
+
+  isString: function(object) {
+    return typeof object == "string";
+  },
+
+  isNumber: function(object) {
+    return typeof object == "number";
+  },
+
+  isUndefined: function(object) {
+    return typeof object == "undefined";
+  }
+});
+
+Object.extend(Function.prototype, {
+  argumentNames: function() {
+    var names = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip");
+    return names.length == 1 && !names[0] ? [] : names;
+  },
+
+  bind: function() {
+    if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this;
+    var __method = this, args = $A(arguments), object = args.shift();
+    return function() {
+      return __method.apply(object, args.concat($A(arguments)));
+    }
+  },
+
+  bindAsEventListener: function() {
+    var __method = this, args = $A(arguments), object = args.shift();
+    return function(event) {
+      return __method.apply(object, [event || window.event].concat(args));
+    }
+  },
+
+  curry: function() {
+    if (!arguments.length) return this;
+    var __method = this, args = $A(arguments);
+    return function() {
+      return __method.apply(this, args.concat($A(arguments)));
+    }
+  },
+
+  delay: function() {
+    var __method = this, args = $A(arguments), timeout = args.shift() * 1000;
+    return window.setTimeout(function() {
+      return __method.apply(__method, args);
+    }, timeout);
+  },
+
+  wrap: function(wrapper) {
+    var __method = this;
+    return function() {
+      return wrapper.apply(this, [__method.bind(this)].concat($A(arguments)));
+    }
+  },
+
+  methodize: function() {
+    if (this._methodized) return this._methodized;
+    var __method = this;
+    return this._methodized = function() {
+      return __method.apply(null, [this].concat($A(arguments)));
+    };
+  }
+});
+
+Function.prototype.defer = Function.prototype.delay.curry(0.01);
+
+Date.prototype.toJSON = function() {
+  return '"' + this.getUTCFullYear() + '-' +
+    (this.getUTCMonth() + 1).toPaddedString(2) + '-' +
+    this.getUTCDate().toPaddedString(2) + 'T' +
+    this.getUTCHours().toPaddedString(2) + ':' +
+    this.getUTCMinutes().toPaddedString(2) + ':' +
+    this.getUTCSeconds().toPaddedString(2) + 'Z"';
+};
+
+var Try = {
+  these: function() {
+    var returnValue;
+
+    for (var i = 0, length = arguments.length; i < length; i++) {
+      var lambda = arguments[i];
+      try {
+        returnValue = lambda();
+        break;
+      } catch (e) { }
+    }
+
+    return returnValue;
+  }
+};
+
+RegExp.prototype.match = RegExp.prototype.test;
+
+RegExp.escape = function(str) {
+  return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
+};
+
+/*--------------------------------------------------------------------------*/
+
+var PeriodicalExecuter = Class.create({
+  initialize: function(callback, frequency) {
+    this.callback = callback;
+    this.frequency = frequency;
+    this.currentlyExecuting = false;
+
+    this.registerCallback();
+  },
+
+  registerCallback: function() {
+    this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
+  },
+
+  execute: function() {
+    this.callback(this);
+  },
+
+  stop: function() {
+    if (!this.timer) return;
+    clearInterval(this.timer);
+    this.timer = null;
+  },
+
+  onTimerEvent: function() {
+    if (!this.currentlyExecuting) {
+      try {
+        this.currentlyExecuting = true;
+        this.execute();
+      } finally {
+        this.currentlyExecuting = false;
+      }
+    }
+  }
+});
+Object.extend(String, {
+  interpret: function(value) {
+    return value == null ? '' : String(value);
+  },
+  specialChar: {
+    '\b': '\\b',
+    '\t': '\\t',
+    '\n': '\\n',
+    '\f': '\\f',
+    '\r': '\\r',
+    '\\': '\\\\'
+  }
+});
+
+Object.extend(String.prototype, {
+  gsub: function(pattern, replacement) {
+    var result = '', source = this, match;
+    replacement = arguments.callee.prepareReplacement(replacement);
+
+    while (source.length > 0) {
+      if (match = source.match(pattern)) {
+        result += source.slice(0, match.index);
+        result += String.interpret(replacement(match));
+        source  = source.slice(match.index + match[0].length);
+      } else {
+        result += source, source = '';
+      }
+    }
+    return result;
+  },
+
+  sub: function(pattern, replacement, count) {
+    replacement = this.gsub.prepareReplacement(replacement);
+    count = Object.isUndefined(count) ? 1 : count;
+
+    return this.gsub(pattern, function(match) {
+      if (--count < 0) return match[0];
+      return replacement(match);
+    });
+  },
+
+  scan: function(pattern, iterator) {
+    this.gsub(pattern, iterator);
+    return String(this);
+  },
+
+  truncate: function(length, truncation) {
+    length = length || 30;
+    truncation = Object.isUndefined(truncation) ? '...' : truncation;
+    return this.length > length ?
+      this.slice(0, length - truncation.length) + truncation : String(this);
+  },
+
+  strip: function() {
+    return this.replace(/^\s+/, '').replace(/\s+$/, '');
+  },
+
+  stripTags: function() {
+    return this.replace(/<\/?[^>]+>/gi, '');
+  },
+
+  stripScripts: function() {
+    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
+  },
+
+  extractScripts: function() {
+    var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
+    var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
+    return (this.match(matchAll) || []).map(function(scriptTag) {
+      return (scriptTag.match(matchOne) || ['', ''])[1];
+    });
+  },
+
+  evalScripts: function() {
+    return this.extractScripts().map(function(script) { return eval(script) });
+  },
+
+  escapeHTML: function() {
+    var self = arguments.callee;
+    self.text.data = this;
+    return self.div.innerHTML;
+  },
+
+  unescapeHTML: function() {
+    var div = new Element('div');
+    div.innerHTML = this.stripTags();
+    return div.childNodes[0] ? (div.childNodes.length > 1 ?
+      $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) :
+      div.childNodes[0].nodeValue) : '';
+  },
+
+  toQueryParams: function(separator) {
+    var match = this.strip().match(/([^?#]*)(#.*)?$/);
+    if (!match) return { };
+
+    return match[1].split(separator || '&').inject({ }, function(hash, pair) {
+      if ((pair = pair.split('='))[0]) {
+        var key = decodeURIComponent(pair.shift());
+        var value = pair.length > 1 ? pair.join('=') : pair[0];
+        if (value != undefined) value = decodeURIComponent(value);
+
+        if (key in hash) {
+          if (!Object.isArray(hash[key])) hash[key] = [hash[key]];
+          hash[key].push(value);
+        }
+        else hash[key] = value;
+      }
+      return hash;
+    });
+  },
+
+  toArray: function() {
+    return this.split('');
+  },
+
+  succ: function() {
+    return this.slice(0, this.length - 1) +
+      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
+  },
+
+  times: function(count) {
+    return count < 1 ? '' : new Array(count + 1).join(this);
+  },
+
+  camelize: function() {
+    var parts = this.split('-'), len = parts.length;
+    if (len == 1) return parts[0];
+
+    var camelized = this.charAt(0) == '-'
+      ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
+      : parts[0];
+
+    for (var i = 1; i < len; i++)
+      camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
+
+    return camelized;
+  },
+
+  capitalize: function() {
+    return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
+  },
+
+  underscore: function() {
+    return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
+  },
+
+  dasherize: function() {
+    return this.gsub(/_/,'-');
+  },
+
+  inspect: function(useDoubleQuotes) {
+    var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) {
+      var character = String.specialChar[match[0]];
+      return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16);
+    });
+    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"';
+    return "'" + escapedString.replace(/'/g, '\\\'') + "'";
+  },
+
+  toJSON: function() {
+    return this.inspect(true);
+  },
+
+  unfilterJSON: function(filter) {
+    return this.sub(filter || Prototype.JSONFilter, '#{1}');
+  },
+
+  isJSON: function() {
+    var str = this;
+    if (str.blank()) return false;
+    str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
+    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
+  },
+
+  evalJSON: function(sanitize) {
+    var json = this.unfilterJSON();
+    try {
+      if (!sanitize || json.isJSON()) return eval('(' + json + ')');
+    } catch (e) { }
+    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
<<diff output has been trimmed to 500 lines, 3723 line(s) remained.>>

Added: livecd/kde4/html/js/scriptaculous.js
==============================================================================
--- (empty file)
+++ livecd/kde4/html/js/scriptaculous.js	Tue Feb 17 21:54:30 2009
@@ -0,0 +1,58 @@
+// script.aculo.us scriptaculous.js v1.8.1, Thu Jan 03 22:07:12 -0500 2008
+
+// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+// For details, see the script.aculo.us web site: http://script.aculo.us/
+
+var Scriptaculous = {
+  Version: '1.8.1',
+  require: function(libraryName) {
+    // inserting via DOM fails in Safari 2.0, so brute force approach
+    document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');
+  },
+  REQUIRED_PROTOTYPE: '1.6.0',
+  load: function() {
+    function convertVersionString(versionString){
+      var r = versionString.split('.');
+      return parseInt(r[0])*100000 + parseInt(r[1])*1000 + parseInt(r[2]);
+    }
+ 
+    if((typeof Prototype=='undefined') || 
+       (typeof Element == 'undefined') || 
+       (typeof Element.Methods=='undefined') ||
+       (convertVersionString(Prototype.Version) < 
+        convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE)))
+       throw("script.aculo.us requires the Prototype JavaScript framework >= " +
+        Scriptaculous.REQUIRED_PROTOTYPE);
+    
+    $A(document.getElementsByTagName("script")).findAll( function(s) {
+      return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/))
+    }).each( function(s) {
+      var path = s.src.replace(/scriptaculous\.js(\?.*)?$/,'');
+      var includes = s.src.match(/\?.*load=([a-z,]*)/);
+      (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider,sound').split(',').each(
+       function(include) { Scriptaculous.require(path+include+'.js') });
+    });
+  }
+}
+
+Scriptaculous.load();
\ No newline at end of file

Modified: livecd/kde4/html/kb.txt
==============================================================================
--- livecd/kde4/html/kb.txt	(original)
+++ livecd/kde4/html/kb.txt	Tue Feb 17 21:54:30 2009
@@ -1,5 +1,11 @@
                 <div id="left">
                         <h2><a href="">Known Bugs</a></h2>
+                        <p class="date"><span>4.2</span><br />RC4</p>
+                        <p class="subtitle">Bugs in PLD-Linux Titanium LiveCD 4.2 RC4</p>
+                        <p>
+			No known bugs found yet.
+                        </p>
+                        <p>&nbsp;</p>
                         <p class="date"><span>4.2</span><br />RC3</p>
                         <p class="subtitle">Bugs in PLD-Linux Titanium LiveCD 4.2 RC3</p>
                         <p>

Added: livecd/kde4/html/rpmqa-RC4.txt
==============================================================================
--- (empty file)
+++ livecd/kde4/html/rpmqa-RC4.txt	Tue Feb 17 21:54:30 2009
@@ -0,0 +1,684 @@
+ConsoleKit-0.3.0-1.i686
+ConsoleKit-libs-0.3.0-1.i686
+FHS-2.3-23.i686
+GConf2-2.24.0-1.i686
+ImageMagick-6.4.8.2-1.i686
+ImageMagick-coder-jpeg-6.4.8.2-1.i686
+ImageMagick-coder-jpeg2-6.4.8.2-1.i686
+ImageMagick-libs-6.4.8.2-1.i686
+Mesa-dri-driver-ati-mach64-7.2-3.i686
+Mesa-dri-driver-ati-radeon-R100-7.2-3.i686
+Mesa-dri-driver-ati-radeon-R200-7.2-3.i686
+Mesa-dri-driver-ati-radeon-R300-7.2-3.i686
+Mesa-dri-driver-ati-rage128-7.2-3.i686
+Mesa-dri-driver-intel-i810-7.2-3.i686
+Mesa-dri-driver-intel-i915-7.2-3.i686
+Mesa-dri-driver-intel-i965-7.2-3.i686
+Mesa-dri-driver-matrox-7.2-3.i686
+Mesa-dri-driver-s3virge-7.2-3.i686
+Mesa-dri-driver-savage-7.2-3.i686
+Mesa-dri-driver-sis-7.2-3.i686
+Mesa-dri-driver-swrast-7.2-3.i686
+Mesa-libGL-7.2-3.i686
+Mesa-libGLU-7.2-3.i686
+NetworkManager-0.7.0-1.i686
+NetworkManager-applet-0.7.0-1.i686
+NetworkManager-libs-0.7.0-1.i686
+ORBit2-2.14.16-1.i686
+OpenEXR-1.6.1-2.i686
+PackageKit-0.3.12-4.i686
+PackageKit-libs-0.3.12-4.i686
+PolicyKit-0.9-1.i686
+PolicyKit-gnome-0.9.2-2.i686
+PolicyKit-gnome-libs-0.9.2-2.i686
+PolicyKit-kde-0-0.884911.1.i686
+PolicyKit-libs-0.9-1.i686
+Qt3Support-4.4.3-2.i686
+QtCore-4.4.3-2.i686
+QtDBus-4.4.3-2.i686
+QtDesigner-4.4.3-2.i686
+QtGui-4.4.3-2.i686
+QtNetwork-4.4.3-2.i686
+QtOpenGL-4.4.3-2.i686
+QtScript-4.4.3-2.i686
+QtSql-4.4.3-2.i686
+QtSql-mysql-4.4.3-2.i686
+QtSvg-4.4.3-2.i686
+QtTest-4.4.3-2.i686
+QtUiTools-4.4.3-2.i686
+QtWebKit-4.4.3-2.i686
+QtXml-4.4.3-2.i686
+SysVinit-2.86-17.i686
+X11-Xserver-7.0.0-7.i686
+X11-fonts-7.0.0-7.i686
+acl-2.2.47-1.i686
+akonadi-1.1.1-4.i686
+alsa-lib-1.0.18-1.i686
+amarok-2.1-0.924419.3.i686
+amarok-scripts-2.1-0.924419.3.i686
+anaconda-11.4.1.200809160017-2shadzik.i686
+anaconda-gui-11.4.1.200809160017-2shadzik.i686
+applnk-1.9.6-2.noarch
+apr-1.3.3-3.i686
+apr-util-1.3.4-3.i686
+aspell-0.60.6-1.i686
+aspell-libs-0.60.6-1.i686
+atk-1.24.0-1.i686
+attr-2.4.43-1.i686
+audiofile-0.2.6-4.i686
+audit-libs-1.7.11-2.i686
+aufs-0-0.20081106.13.i686
+avahi-0.6.24-1.i686
+avahi-glib-0.6.24-1.i686
+avahi-libs-0.6.24-1.i686
+basesystem-2.99-3.i686
+bash-3.2.48-1.i686
+bdevid-6.0.24-2.i686
+bdevid-libs-6.0.24-2.i686
+beecrypt-4.1.2-6.i686
+blockdev-2.14.1-1.i686
+bluez-libs-4.28-1.i686
+boost-program_options-1.37.0-3.i686
+browser-plugins-3.0-1.noarch
+busybox-initrd-1.12.4-1.i686
+bzip2-libs-1.0.5-5.i686
+ca-certificates-20080809-5.noarch
+cairo-1.8.6-1.i686
+capseo-0.3.0-1.i686
+cdparanoia-III-libs-10.2-2.i686
+cdrdao-1.2.2-2.i686
+cdrkit-mkisofs-1.1.9-1.i686
+cdrtools-2.01.01-0.a53.1.i686
+check-0.9.5-1.i686
+chkconfig-1.3.20-0.4.i686
+chmlib-0.39-1.i686
+clucene-core-0.9.20-2.i686
+cman-libs-2.00.00-3.i686
+coreutils-6.12-3.i686
+cpio-2.9-2.i686
+cracklib-2.8.12-1.i686
+cracklib-dicts-2.8.12-1.i686
+cryptsetup-luks-1.0.6-3.i686
+cups-image-lib-1.3.9-1.i686
+cups-lib-1.3.9-1.i686
+curl-libs-7.19.3-1.i686
+cyrus-sasl-2.1.22-13.i686
+db4.5-4.5.20-8.i686
+db4.7-4.7.25-5.i686
+dbus-1.2.12-2.i686
+dbus-dirs-1.2.12-2.i686
+dbus-glib-0.78-1.i686
+dbus-libs-1.2.12-2.i686
+dbus-qt-0.70-2.i686
+device-mapper-2.02.44-1.i686
+dhcp-client-4.0.1-1.i686
+dhcpcd-4.0.2-1.i686
+diffutils-2.8.7-5.i686
+dirac-1.0.0-1.i686
+djvulibre-3.5.20-1.i686
+dlm-2.00.00-1.i686
+dmidecode-2.10-1.i686
+dmraid-1.0.0-0.rc15.1.i686
+docbook-dtd412-xml-1.0-13.noarch
+docbook-dtd42-xml-1.0-5.noarch
+docbook-style-xsl-1.74.0-1.noarch
+dvd+rw-tools-7.1-1.i686
+e2fsprogs-1.41.3-1.i686
+e2fsprogs-libs-1.41.3-1.i686
+ebook-tools-0.1.1-2.i686
+eet-1.1.0-0.1.i686
+eject-2.1.5-3.i686
+elfutils-libelf-0.132-1.i686
+enchant-1.3.0-2.i686
+enchant-aspell-1.3.0-2.i686
+esound-libs-0.2.40-1.i686
+exiv2-libs-0.17.1-3.i686
+expat-2.0.1-1.i686
+faac-libs-1.26-1.i686
+faad2-libs-2.6.1-2.i686
+fam-libs-2.7.0-7.i686
+ffmpeg-libs-0.4.9-4.20081024.1.i686
+fftw3-3.2-1.i686
+file-4.26-4.i686
+filesystem-3.0-20.i686
+findutils-4.4.0-1.i686
+firstboot-1.99-3.i686
+fix-info-dir-0.13-9.i686
+flac-1.2.1-1.i686
+fontconfig-libs-2.6.0-2.i686
+fontpostinst-0.1-15.noarch
+fonts-TTF-bitstream-vera-1.10-5.noarch
+freetype-2.3.7-3.i686
+fsck-1.41.3-1.i686
+gawk-3.1.6-1.i686
+gdbm-1.8.3-8.i686
+geninitrd-10000-2.noarch
+genromfs-0.5.2-1.i686
+gettext-0.17-5.i686
+ghostscript-8.63-1.i686
+giflib-4.1.4-7.i686
+glib-1.2.10-16.i686
+glib2-2.18.4-1.i686
+glibc-2.8-11.i686
+glibc-misc-2.8-11.i686
+gmp-4.2.4-1.i686
+gnome-keyring-libs-2.24.1-1.i686
+gnome-vfs2-libs-2.24.0-1.i686
+gnupg-smime-2.0.10-3.i686
+gnupg2-2.0.10-3.i686
+gnupg2-common-2.0.10-3.i686
+gnutls-2.6.0-1.i686
+google-gadgets-0.10.5-1.i686
+google-gadgets-gst-0.10.5-1.i686
+google-gadgets-qt-0.10.5-1.i686
+gpgme-1.1.8-1.i686
+gpm-libs-1.20.5-3.i686
+grep-2.5.3-4.i686
+grub-0.97-12.i686
+grubby-6.0.24-2.i686
+gsl-1.11-1.i686
+gstreamer-0.10.21-2.i686
+gstreamer-plugins-base-0.10.21-1.i686
+gtk+-1.2.10-21.i686
+gtk+2-2.14.5-1.i686
+gzip-1.3.12-1.i686
+hal-0.5.11-8.i686
+hal-info-0.0-0.20080508.1.i686
+hal-libgpod-0.7.0-1.i686
+hal-libs-0.5.11-8.i686
+hfsutils-3.2.6-3.i686
+hicolor-icon-theme-0.10-2.noarch
+iconv-2.8-11.i686
+ilmbase-1.0.1-2.i686
+intltool-0.40.5-1.noarch
+iptraf-3.0.0-4.i686
+iputils-ping-s20071127-1.i686
+iso-codes-3.3-1.noarch
+issue-1.0-1.noarch
+jack-audio-connection-kit-libs-0.109.2-1.i686
+jasper-libs-1.900.1-1.i686
+java-sun-jre-1.6.0.12-1.i686
+java-sun-tools-1.6.0.12-1.i686
+jbig2dec-0.9-1.i686
+jfsutils-1.1.13-1.i686
+jpackage-utils-1.7.3-4.i686
+k3b-1.95-0.925654.1.i686
+kbd-1.12-21.i686
+kde-common-dirs-0.5-1.i686
+kde4-decoration-oxygen-4.2.0-5.i686
+kde4-decoration-ozone-4.2.0-5.i686
+kde4-desktopthemes-4.2.0-3.i686
+kde4-dolphin-4.2.0-5.i686
+kde4-icons-oxygen-4.2.0-6.i686
+kde4-kdeartwork-screensavers-4.2.0-3.i686
+kde4-kdeartwork-wallpapers-4.2.0-3.i686
+kde4-kdebase-4.2.0-5.i686
+kde4-kdebase-infocenter-4.2.0-5.i686
+kde4-kdebase-kappfinder-4.2.0-5.i686
+kde4-kdebase-kdialog-4.2.0-5.i686
+kde4-kdebase-kfind-4.2.0-5.i686
+kde4-kdebase-konsole-4.2.0-5.i686
+kde4-kdebase-kwrite-4.2.0-5.i686
+kde4-kdebase-runtime-4.2.0-6.i686
+kde4-kdebase-useraccount-4.2.0-5.i686
+kde4-kdebase-workspace-4.2.0-5.i686
+kde4-kdebase-workspace-kfontinst-4.2.0-5.i686
+kde4-kdebase-workspace-klipper-4.2.0-5.i686
+kde4-kdebase-workspace-kwin-4.2.0-5.i686
+kde4-kdebase-workspace-kwrited-4.2.0-5.i686
+kde4-kdebase-workspace-libksgrd-4.2.0-5.i686
+kde4-kdebase-workspace-networkmanager-4.2.0-5.i686
+kde4-kdebase-workspace-plasma-4.2.0-5.i686
+kde4-kdebase-workspace-screensavers-4.2.0-5.i686
+kde4-kdebase-workspace-solid-4.2.0-5.i686
+kde4-kdebase-workspace-wallpapers-4.2.0-5.i686
+kde4-kdegraphics-gwenview-4.2.0-3.i686
+kde4-kdegraphics-kamera-4.2.0-3.i686
+kde4-kdegraphics-kcolorchooser-4.2.0-3.i686
+kde4-kdegraphics-kfile-4.2.0-3.i686
+kde4-kdegraphics-kgamma-4.2.0-3.i686
+kde4-kdegraphics-kolourpaint-4.2.0-3.i686
+kde4-kdegraphics-kruler-4.2.0-3.i686
+kde4-kdegraphics-ksane-4.2.0-3.i686
+kde4-kdegraphics-ksnapshot-4.2.0-3.i686
+kde4-kdegraphics-okular-4.2.0-3.i686
+kde4-kdegraphics-svgpart-4.2.0-3.i686
+kde4-kdelibs-4.2.0-8.i686
+kde4-kdelibs-libs-4.2.0-8.i686
+kde4-kdemultimedia-audiocd-4.2.0-3.i686
+kde4-kdemultimedia-cddb-4.2.0-3.i686
+kde4-kdemultimedia-dragon-4.2.0-3.i686
+kde4-kdemultimedia-juk-4.2.0-3.i686
+kde4-kdemultimedia-kmix-4.2.0-3.i686
+kde4-kdemultimedia-kscd-4.2.0-3.i686
+kde4-kdemultimedia-libkcddb-4.2.0-3.i686
+kde4-kdenetwork-filesharing-4.2.0-4.i686
+kde4-kdenetwork-kget-4.2.0-4.i686
+kde4-kdenetwork-kopete-4.2.0-4.i686
+kde4-kdenetwork-kopete-protocol-aim-4.2.0-4.i686
+kde4-kdenetwork-kopete-protocol-bonjour-4.2.0-4.i686
+kde4-kdenetwork-kopete-protocol-gg-4.2.0-4.i686
+kde4-kdenetwork-kopete-protocol-groupwise-4.2.0-4.i686
+kde4-kdenetwork-kopete-protocol-icq-4.2.0-4.i686
+kde4-kdenetwork-kopete-protocol-sms-4.2.0-4.i686
+kde4-kdenetwork-kopete-protocol-winpopup-4.2.0-4.i686
+kde4-kdenetwork-kopete-tool-contactnotes-4.2.0-4.i686
+kde4-kdenetwork-libkopete-4.2.0-4.i686
+kde4-kdenetwork-libkopete_oscar-4.2.0-4.i686
+kde4-kdenetwork-libkopete_otr-4.2.0-4.i686
+kde4-kdenetwork-libkopete_videodevice-4.2.0-4.i686
+kde4-kdepim-4.2.0-5.i686
+kde4-kdepim-akregator-4.2.0-5.i686
+kde4-kdepim-kaddressbook-4.2.0-5.i686
+kde4-kdepim-kmail-4.2.0-5.i686
+kde4-kdepim-knode-4.2.0-5.i686
+kde4-kdepim-knotes-4.2.0-5.i686
+kde4-kdepim-kontact-4.2.0-5.i686
+kde4-kdepim-kontact-plugin-akregator-4.2.0-5.i686
+kde4-kdepim-kontact-plugin-kaddressbook-4.2.0-5.i686
+kde4-kdepim-kontact-plugin-kmail-4.2.0-5.i686
+kde4-kdepim-kontact-plugin-knode-4.2.0-5.i686
+kde4-kdepim-kontact-plugin-knotes-4.2.0-5.i686
+kde4-kdepim-kontact-plugin-korganizer-4.2.0-5.i686
+kde4-kdepim-kontact-plugin-ktimetracker-4.2.0-5.i686
+kde4-kdepim-kontact-plugin-specialdates-4.2.0-5.i686
+kde4-kdepim-kontact-plugin-summary-4.2.0-5.i686
+kde4-kdepim-korganizer-4.2.0-5.i686
+kde4-kdepim-ktimetracker-4.2.0-5.i686
+kde4-kdepim-libs-4.2.0-5.i686
+kde4-kdepimlibs-4.2.0-4.i686
+kde4-kdeplasma-addons-4.2.0-3.i686
+kde4-kdeplasma-addons-lancelot-4.2.0-3.i686
+kde4-kgreet-classic-4.2.0-5.i686
+kde4-kgreet-generic-4.2.0-5.i686
+kde4-koffice-karbon-1.9.98.6-2.i686
+kde4-koffice-kplato-1.9.98.6-2.i686
+kde4-koffice-kpresenter-1.9.98.6-2.i686
+kde4-koffice-kspread-1.9.98.6-2.i686
+kde4-koffice-kword-1.9.98.6-2.i686
+kde4-konqueror-4.2.0-5.i686
+kde4-konqueror-libs-4.2.0-5.i686
+kde4-phonon-4.2.0-6.i686
+kde4-splash-Default-4.2.0-5.i686
+kde4-style-oxygen-4.2.0-6.i686
+kernel-2.6.27.17-1.i686
+kernel-drm-2.6.27.17-1.i686
+kernel-misc-vboxadd-2.1.2-4 at 2.6.27.17_1.i686
+kernel-misc-vboxdrv-2.1.2-4 at 2.6.27.17_1.i686
+kernel-misc-vboxvfs-2.1.2-4 at 2.6.27.17_1.i686
+kernel-net-atl2-2.0.5-17 at 2.6.27.17_1.i686
+kernel-net-e1000-8.0.6-15 at 2.6.27.17_1.i686
+kernel-net-e1000e-0.5.8.2-9 at 2.6.27.17_1.i686
+kernel-net-igb-1.3.8.6-11 at 2.6.27.17_1.i686
+kernel-net-ixgb-1.0.135-25 at 2.6.27.17_1.i686
+kernel-net-ixgbe-1.3.56.5-4 at 2.6.27.17_1.i686
+kernel-net-madwifi-ng-0-0.20081204.7 at 2.6.27.17_1.i686
+kernel-net-sk98lin-10.70.2.3-4 at 2.6.27.17_1.i686
+kernel-sound-alsa-2.6.27.17-1.i686
+keyutils-libs-1.2-2.i686
+kpackagekit-0.3.1-3.i686
+krb5-libs-1.6.3-1.i686
+lame-libs-3.98.2-1.i686
+lcms-1.17-1.i686
+ldconfig-2.8-11.i686
+lesspipe-1.0-4.noarch
+libIDL-0.8.11-1.i686
+libao-0.8.8-1.i686
+libarchive-2.4.17-2.i686
+libart_lgpl-2.3.20-1.i686
+libassuan-1.0.5-1.i686
+libasyncns-0.5-1.i686
+libbonobo-2.24.0-2.i686
+libbonoboui-2.24.0-2.i686
+libcap-2.16-2.i686
+libcap-libs-2.16-2.i686
+libcaptury-0.3.0-2.i686
+libcfg+-0.6.2-3.i686
+libcom_err-1.41.3-1.i686
+libcroco-0.6.1-3.i686
+libdaemon-0.13-1.i686
+libdhcp-1.99.8-1.i686
+libdhcp6client-1.0.15-1.i686
+libdrm-2.4.4-1.i686
+libdvdnav-4.1.3-1.i686
+libdvdread-4.1.3-1.i686
+libedit-2.11-1.i686
+libexif-0.6.17-1.i686
+libffi-4.3.3-3.i686
+libgcc-4.3.3-3.i686
+libgcj-4.3.3-3.i686
+libgcrypt-1.4.3-1.i686
+libggadget-0.10.5-1.i686
+libggadget-qt-0.10.5-1.i686
+libgnokii-0.6.27-3.i686
+libgnome-2.24.1-1.i686
+libgnomeui-2.24.0-2.i686
+libgpg-error-1.7-1.i686
+libgphoto2-2.4.4-3.i686
+libgpod-0.7.0-1.i686
+libgsf-1.14.9-6.i686
+libgsm-1.0.12-2.i686
+libical-0.33-1.i686
+libidn-1.11-1.i686
+libieee1284-0.2.10-2.i686
+libiw-29-2.i686
+libjpeg-6b-28.i686
+libksba-1.0.4-1.i686
+libltdl-2.2.6-4.i686
+libmad-0.15.1b-5.i686
+libmagic-4.26-4.i686
+libmng-1.0.10-2.i686
+libmodplug-0.8.4-1.i686
+libmpcdec-1.2.6-3.i686
+libmtp-0.3.1-3.i686
+libmusicbrainz-2.1.5-1.i686
+libnl-1.1-2.i686
+libnscd-2.0.2-1.i686
+libofa-0.9.3-2.i686
+libogg-1.1.3-2.i686
+liboil-0.3.15-1.i686
+libopensync-0.40-0.20081027.1.i686
+libotr-3.2.0-1.i686
+libpcap-1.0.0-2.i686
+libpng-1.2.34-1.i686
+libraptor-1.4.18-1.i686
+libraw1394-2.0.0-1.i686
+librsvg-2.22.3-2.i686
+libsamplerate-0.1.2-3.i686
+libselinux-2.0.65-2.i686
+libsepol-2.0.30-1.i686
+libsmbclient-3.2.7-2.i686
+libsmbios-2.0.2-1.i686
+libsndfile-1.0.17-4.i686
+libspectre-0.2.2-1.i686
+libssh2-0.18-2.i686
+libstdc++-4.3.3-3.i686
+libtalloc-3.2.5-2.i686
+libtheora-1.0-2.i686
+libtiff-3.8.2-5.i686
+libtunepimp-0.5.3-8.i686
+libusb-1.0.0-1.i686
+libusb-compat-0.1.0-1.i686
+libuuid-1.41.3-1.i686
+libvisual-0.4.0-5.i686
+libvisual-plugin-input-alsa-0.4.0-4.i686
+libvisual-plugin-input-esd-0.4.0-4.i686
+libvisual-plugins-0.4.0-4.i686
+libvolume_id-137-3.i686
+libvorbis-1.2.0-3.i686
+libwrap-libs-7.6-43.i686
+libx264-0.1.2-1.20081023_2245.1.i686
+libxcb-1.1.90.1-1.i686
+libxklavier-3.8-1.i686
+libxml2-2.7.2-3.i686
+libxml2-progs-2.7.2-1.i686
+libxslt-1.1.24-3.i686
+libzip-0.9-1.i686
+linux-atm-2.5.0-1.i686
+linux-atm-libs-2.5.0-1.i686
+linux-live-6.2.4-5.noarch
+lm_sensors-libs-3.0.3-1.i686
+log4cxx-0.10.0-0.3.i686
+login-2.14.1-1.i686
+logrotate-3.7.7-1.i686
+loudmouth-1.4.3-1.i686
+lzma-4.999.5-0.alpha.4.i686
+lzo-2.03-1.i686
+madwifi-ng-0-0.20081204.7.i686
+mailx-8.1.1-28.i686
+make-3.81-2.i686
+mawk-1.3.3-33.i686
+mingetty-1.08-1.i686
+module-init-tools-3.4-1.i686
+mount-2.14.1-1.i686
+mpeg4ip-libs-1.6.1-6.i686
+mpfr-2.3.2-1.i686
+myspell-common-1.0.2-11.noarch
+mysql-5.1.31-3.i686
+mysql-charsets-5.1.31-3.i686
+mysql-libs-5.1.31-3.i686
+nash-libs-6.0.24-2.i686
+ncurses-5.7-4.i686
+ncurses-ext-5.7-4.i686
+net-tools-1.60-27.i686
+newt-0.52.10-2.i686
+nspr-4.7.1-1.i686
+nss-3.12-2.i686
+ntp-client-4.2.4p6-1.i686
+open-1.4-18.i686
+openldap-libs-2.4.13-1.i686
+openssh-5.1p1-5.i686
+openssh-blacklist-0.4.1-2.i686
+openssh-clients-5.1p1-5.i686
+openssh-server-5.1p1-5.i686
+openssl-0.9.8j-1.i686
+opera-9.63-1.i686
+ossp-uuid-1.6.2-5.i686
+pam-1.0.1-3.i686
+pam-libs-1.0.1-3.i686
+pango-1.22.4-1.i686
+parted-1.8.8-1.i686
+partitionmanager-1.0.0-0.BETA1a.1.i686
+patch-2.5.9-6.i686
+pci-database-0.18-1.noarch
+pciutils-3.1.1-1.i686
+pcre-7.8-1.i686
+pcsc-lite-libs-1.4.101-1.i686
+pdksh-5.2.14-51.i686
+perl-HTML-Parser-3.56-3.i686
+perl-HTML-Tagset-3.20-1.noarch
+perl-Net-DBus-0.33.6-1.i686
+perl-URI-1.37-1.noarch
+perl-XML-Parser-2.36-4.i686
+perl-XML-Twig-3.32-1.noarch
+perl-base-5.8.8-11.i686
+perl-dirs-2.0-5.i686
+perl-libs-5.8.8-11.i686
+perl-libwww-5.813-1.noarch
+perl-modules-5.8.8-11.i686
+perl-perldoc-5.8.8-11.i686
+perl-tools-pod-5.8.8-11.i686
+phonon-4.3.0-2.i686
+pilot-link-0.12.3-3.i686
+pinentry-0.7.5-3.i686
+pixman-0.12.0-2.i686
+poldek-0.30-0.20080820.23.14.i686
+poldek-libs-0.30-0.20080820.23.14.i686
+poppler-0.10.3-1.i686
+popt-1.14-1.i686
+postfix-2.5.5-1.i686
+ppp-2.4.4-2.i686
+procps-3.2.7-5.i686
+psmisc-22.6-2.i686
+pth-2.0.7-3.i686
+pulseaudio-libs-0.9.13-2.i686
+pwdutils-3.1.3-5.i686
+python-2.5.2-3.i686
+python-booty-0.93-4.i686
+python-cracklib-2.8.12-1.i686
+python-dbus-0.83.0-1.i686
<<diff output has been trimmed to 500 lines, 185 line(s) remained.>>


More information about the pld-cvs-commit mailing list